JSF错误和重定向

时间:2012-03-18 20:00:58

标签: jsf-2

我的页面通过其ID显示了一个项目:item.xhtml?id=xxx

如果未提供ID,则会显示所有项目的列表。

在同一页面中,有一个用于更新项目字段的表单。 使用<f:viewParam>和隐藏的输入,我可以在提交表单时再次显示item.xhtml?id=xxx。但是如果发生验证错误(我使用Bean验证),则会出现item.xhtml,其中包含所有项目的列表和错误消息。即使发生错误,有没有办法重定向?

PS:为什么jsf会从网址中删除查询字符串?我的意思是,如果呈现的表单操作是/context/page.xhtml?query=string而不是/context/page.xhtml,则不存在这些问题。我哪里错了?

1 个答案:

答案 0 :(得分: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()方法。