2012-03-18 54 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