如何防止JSF2注入隐藏的javax.faces.ViewState

时间:2012-05-24 19:28:13

标签: jsf-2 primefaces viewstate mojarra

我怎样才能禁止Mojarra,将{javax.faces.ViewState隐藏到我的<form>中?我有一个搜索<form method='GET'>,它首次加载我的页面(因为我的视图范围的bean被正确地重新初始化)。但是在页面中的AJAX分页(通过PrimeFaces网格)之后,Mojarra(或PrimeFaces?)将隐藏的javax.faces.ViewState注入到我的表单中。现在,当我提交表单时,由于javax.faces.ViewState输入,它不会重新启动我的视图范围bean。

这里的问题是:我希望我的搜索bean初始化并向用户显示结果,但是当传递ViewScope参数时,此bean既不会被初始化也不会显示相关页面。它只是保留在上一页。

1 个答案:

答案 0 :(得分:2)

Mojarra不是这样做的,而是PrimeFaces正在这样做。尝试使用<h:commandButton>调用<f:ajax>,您会看到它只更新按钮最初所在的表单的视图状态。

您可能希望向PrimeFaces人报告issue他们应该在ajax更新期间不接触任何<form>和/或没有{{{}的method="get"元素1}}。

在修复之前,最好的办法是删除提交纯HTML表单时的元素。

<input type="hidden" name="formId" value="formId">