2014-09-23 34 views
0

我使用Pretty Faces做URL重写,以便能够重用一些xhtml文件。我希望像'/honda/index.xhtml'和'/toyota/index.xhtml'这样的URL都进入相同的/make/index.xhtml文件,并将make作为参数进入。这种路由似乎工作确定有这样的配置:PrettyFaces从表单提交URL路由

<url-mapping id="carMake"> 
    <pattern value="/#{make}/index.xhtml"></pattern> 
    <view-id value="/make/index.xhtml"/> 
</url-mapping> 

我也有这个映射为一个搜索结果页面类型:

<url-mapping id="search"> 
    <pattern value="/#{make}/search/index.xhtml" /> 
    <view-id value="/search/index.xhtml" /> 
</url-mapping> 

的这两种工作如预期,当我手动将浏览器中的URL。

当我尝试在第一页上放置一个表单时,我想重定向到第二个页面时遇到问题。我有一个形式,这个JSF XHTML代码:

<h:form> 
    <h:messages /> 
    <h:inputText id="searchTerm"/> 
    <h:commandButton value="search" action="/honda/search/index.xhtml?faces-redirect=true"/> 
</h:form> 

(硬编码/本田在这里,以简化的例子)

当我试图提交该搜索,它反弹回相同/本田/指数.xhtml,没有消息显示在页面上。

日志显示此:

09-23 11:39:55 DEBUG PrettyNavigationHandler:57 - Navigation requested: fromAction [/honda/search/index.xhtml?faces-redirect=true], outcome [/honda/search/index.xhtml?faces-redirect=true] 
09-23 11:39:55 DEBUG PrettyNavigationHandler:60 - Not a PrettyFaces navigation string - passing control to default nav-handler 

我没有脸重定向PARAM尝试过,但得到了同样的结果。

为什么/honda/search/index.xhtml在我直接将其放入浏览器时工作,但不是作为操作的结果?

回答

1

,你不想引用视图-ID的应用程序,那么你需要使用相当导航字符串:

<h:commandButton value="search" action="pretty:honda"><f:param name="make" value="honda" /></h:commandLink>

但这真的只是把它复杂得多,它需要的。我会推荐做@chkal建议的,除了他的例子有点不对。它应该是:

<h:commandButton value="search" action="/search/index.xhtml?faces-redirect=true&make=honda"/>

这应该是涵盖了文档:) http://ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/components.html#components.prettylink检查部分(和它下面的那些),并看看是否有帮助!

1

这种方式不能使用漂亮的URL作为action属性的值。您必须使用标准的JSF结果,make是查询参数。

试试这个:如果你想使用单独的URL从视图ID

<h:commandButton value="search" 
      action="/honda/search/index.xhtml?faces-redirect=true&make=honda"/> 
+0

这是一个很好的答案,虽然不是我所希望的答案,因为它击败了我希望从PrettyFaces中获得的目的。 – JOV 2014-09-24 15:28:17

+0

如果您想单独使用View ID中的URL, t想要在应用中引用视图id,那么你需要使用漂亮的导航字符串:'',但这确实使它变得比它需要的复杂。我会推荐做@chkal建议的,除了他的例子有点不对。它应该是:' Lincoln 2014-09-24 15:58:58