我使用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