我使用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在我直接将其放入浏览器时工作,但不是作为操作的结果?
这是一个很好的答案,虽然不是我所希望的答案,因为它击败了我希望从PrettyFaces中获得的目的。 – JOV 2014-09-24 15:28:17
如果您想单独使用View ID中的URL, t想要在应用中引用视图id,那么你需要使用漂亮的导航字符串:' h:commandLink>',但这确实使它变得比它需要的复杂。我会推荐做@chkal建议的,除了他的例子有点不对。它应该是:' –
Lincoln
2014-09-24 15:58:58