2012-03-18 56 views
0

我表示通過其ID的項目的頁面重定向:顯示item.xhtml?id=xxxJSF錯誤和

如果沒有ID提供的所有項目的清單。

在同一頁面有一個窗體用於更新項目的字段。 使用<f:viewParam>和隱藏的輸入我可以在提交表單時再次顯示item.xhtml?id=xxx。但是,如果發生驗證錯誤(我使用Bean驗證),item.xhtml將顯示所有項目的列表和錯誤消息。即使發生錯誤,是否有重定向的方法?

PS:爲什麼jsf將url查詢從url中取走?我的意思是,如果呈現的表單行爲是/context/page.xhtml?query=string而不是僅僅是/context/page.xhtml,那麼這些問題將不存在。我錯在哪裏?

+0

重複的問題:[http://stackoverflow.com/q/6885887/620338](http://stackoverflow.com/q/6885887/620338)在使用 2012-03-18 20:14:29

回答

0

將託管bean放入視圖範圍@ViewScoped。如果您確實需要您的bean被請求作用域出於某種原因,那麼您需要傳遞參數<f:param>

<h:commandButton value="Submit" action="#{bean.submit}"> 
    <f:param name="paramName" value="#{param.paramName}" /> 
</h:commandButton> 

至於表單動作URL,這是設計。您可以通過提供您自己的ViewHandler實現來覆蓋此實現,其中您相應地覆蓋了getActionURL()方法。

+0

不起作用 – Alf 2012-03-18 23:22:44

+0

@ Alf:請詳細描述「不起作用」。它在JSF 1.x中不受支持,但在JSF 2.x中絕對支持。 – BalusC 2012-03-18 23:42:27

+0

它不起作用,因爲如果發生驗證錯誤,顯示的頁面是item.xhtml而不是item.xhtml?id = xxx。我用'@ ViewScoped'試過。這工作,但我使用CDI。 – Alf 2012-03-19 08:59:20