我有org.omnifaces.util.Faces#問題重定向和會話範圍的bean:Omnifaces Faces.redirect失去談話範圍
有一個按鈕
<p:commandButton action="#{navigationHandler.gotoCreateCar}"
actionListener="#{createHandler.init(searchHandler.search())}
value="#{msg.search}" update=":articleSearchForm">
<f:param name="cid" value="#{javax.enterprise.context.conversation.id}"/>
</p:commandButton>
必須做一個導航createCar頁面在對話範圍的bean的init初始化後的同一個對話範圍內:createHandler。
在NavigationHandler#gotoCreateCar只是調用Faces.redirect(createCarPage)。
如果我這樣做,參數cid不會被轉移,我失去了我的談話。
如果我定義faces-config.xml中的導航規則:
<navigation-case>
<from-outcome>createCar</from-outcome>
<to-view-id>/portal/createCar.xhtml</to-view-id>
<redirect />
</navigation-case>
,並在NavigationHandler#gotoCreateCar只返回所需的結果 - 然後正常工作。
也許我不明白這兩種導航方法之間的區別。如果有人能幫我理解這個問題,我將不勝感激。
謝謝!
好的,謝謝!你能否解釋一下ExternalContext#重定向和導航處理程序重定向之間的區別? – golinko
其中一個不使用JSF導航處理程序,而另一個不使用。 – BalusC
所以導航處理程序處理交談,另外重定向和ExternalContext只是做簡單的重定向?對不起,我只是試圖爲我澄清這個問題。 – golinko