2014-09-23 65 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