【发布时间】:2013-05-23 12:36:34
【问题描述】:
我有一个支持 bean,它是 ViewScoped。我在表单中启用了一些 ajax SelectBooleanCheckboxes。
示例:
<p:selectBooleanCheckbox value="#{formBean.value2}">
<p:ajax update=":theform"/>
</p:selectBooleanCheckbox>
通常情况下,一些隐藏的输入字段应该在 html 中以通过 viewstate id。问题是那些没有在第一页请求上启动。当我单击其中一个复选框时,表单(以及复选框)会刷新。从这一刻起,视图状态 ID 将与这些复选框一起发送,因此可以保留视图状态。
其中最大的问题是在第一次 ajax 调用时会启动一组新的 ViewScoped bean,因此我丢失了有关第一个操作的数据。从那时起,一切似乎都正常了。
谁能告诉我可能是什么问题?
具体代码:
<p:panel header="Schedule" toggleable="true">
<form>
<p:outputPanel id="schedule">
<ui:repeat var="scheduleDay" value="#{jobBean.jobScheduleDays}">
<div>
<p:selectBooleanCheckbox value="#{scheduleDay.selected}" style="margin:4px">
<p:ajax update=":schedule" />
</p:selectBooleanCheckbox>
<h:outputText value="#{scheduleDay.readableDay}" style="text-transform:capitalize"/>
</div>
</ui:repeat>
</p:outputPanel>
</form>
</p:panel>
【问题讨论】:
-
相关表单的父组件是否已由另一个 ajax 请求预先呈现?如果是这样,那么您的问题与stackoverflow.com/questions/2118656/… 的第 7 点相匹配请注意,这个具体问题与复选框完全无关,使用时您会遇到完全相同的问题,例如
<h|p:inputText>代替。 -
不,事实并非如此。我已将我的代码添加到初始帖子中。您指向的修复程序不会立即帮助我。我找不到如何设置渲染属性(我认为它不可用?)。
-
因此,您使用的是纯 HTML
<form>而不是 JSF<h:form>,这与该列表的第 1 点相矛盾? -
哦,是的,这导致了问题。页面的其他部分工作得很好,所以我经历了所有可能导致它的事情。我只是一直忽略这一点。非常感谢!
标签: jsf-2 primefaces