【发布时间】:2014-04-27 19:10:49
【问题描述】:
我见过类似的问题,但没有找到答案...平台是 JSF 2.2.6、Primefaces、Derby DB with Eclipse
我有两个实例,我切换一个项目来影响另一个项目和 ajax 来提供更新。除了一个更新在表格内,另一个在表格外,它们对我来说似乎是一样的。 “item”是指使用布尔值而不是布尔值的 derby 实体,这就是测试 ==true 的原因。这是 XHTML 部分:
<p:growl id="msg"/>
<h:form>
<h:outputLabel value="Team event? " />
<p:selectBooleanButton value="#{events.item.teamEvent}" onLabel="Yes" offLabel="No">
<p:ajax update="teamSize" listener="#{events.changeTeamEvent()}"/>
</p:selectBooleanButton>
<h:outputLabel for="teamSize" id="teamSizeLabel" rendered="#{events.item.teamEvent==true}" value="Team size: "/>
<p:inputText id="teamSize" rendered="#{events.item.teamEvent==true}" value="#{events.item.teamSize}"
validatorMessage="Team size must be between 2 and 4">
<f:validateLongRange minimum="2" maximum="4" />
</p:inputText>
<br/>
<h:outputLabel value="Allow signup? " />
<p:selectBooleanButton value="#{events.item.allowSignup}" onLabel="Yes" offLabel="No">
<p:ajax update=":msg" listener="#{events.changeSignup()}"/>
</p:selectBooleanButton>
</h:form>
支持 bean 是会话范围的,并且使用调试器我已经证明属性已更新,侦听器被调用。两者都不会更改属性。 在侦听器完成所有适当的设置并进入实体文件后,在渲染阶段也会调用,但在我的示例中只有第二个 p:selectBooleanButton 正确渲染。另一个更改按钮,但团队规模信息永远不会改变。当我刷新我的浏览器(最新的 Chrome)时,它会正确显示。我怀疑我渲染的测试是错误的,但在这种情况下刷新应该可以工作。我还尝试了更新属性“teamSize”、“:teamSize”、“teamSize teamSizeLabel”的许多变体。我想要最后一个例子,但试图展示一个简单的例子。
我认为它很简单,但我看不到。
【问题讨论】:
-
将属性 autoUpdate=true 添加到 p:growl 并确保 JSF 项目阶段设置为 web.xml 中的开发
-
项目阶段是开发,咆哮才是真正起作用的。如果是另一个不是。即当我将团队事件更改为是时,团队大小标签和输入文本保持原始状态。如果它们在那里,它们就会保持不变,如果它们没有显示,它们就会保持这种状态。
-
那只是为了显示 jsf 警告
标签: ajax jsf primefaces