1

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

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

4

1 回答 1

2

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

您可能想向PrimeFaces人员报告一个问题<form>,即他们在 ajax 更新期间不应触及任何具有method="get"和/或不具有<input type="hidden" name="formId" value="formId">.

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

<form onsubmit="form.removeChild(document.getElementById('javax.faces.ViewState'))">
于 2012-05-24T19:37:49.343 回答