为什么#{uImanager.select}
永远不会更新?
<p:panel id="EditDetailsPanel" header="Edit Details">
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel value="Simple :" />
<h:selectOneMenu value="#{uImanager.select}">
<f:selectItem itemValue="val1" itemLabel="Coffee1" />
<f:selectItem itemValue="val2" itemLabel="Coffee2" />
<f:selectItem itemValue="val3" itemLabel="Coffee3" />
</h:selectOneMenu>
</h:panelGrid>
<p:commandButton value="Submit" update="EditDetailsForm:EditDetailsPanel"/>
#{uImanager.select}
</p:panel>
它指向带有getter和setter的private String Select;
。它在会话范围的托管bean中定义。
答案 0 :(得分:1)
因为您的update
属性可能指向无效的客户端ID。如果您注意了服务器日志,那么您应该看到PrimeFaces中的以下内容:
INFO: Cannot find component with identifier "EditDetailsForm:EditDetailsPanel" in view.
由于<p:panel>
位于与<p:commandButton>
本身相同的UINamingContainer
父级内(至少根据您目前发布的代码),您可以指定其相对客户ID:
<p:commandButton value="Submit" update="EditDetailsPanel"/>
或者,如果您坚持指定绝对客户端ID,则需要在其前面添加:
:
<p:commandButton value="Submit" update=":EditDetailsForm:EditDetailsPanel"/>
请注意,这只适用于<h:form>
本身没有其他UINamingContainer
父级的情况。在浏览器中打开页面,右键单击查看源以查看生成的HTML元素ID。最后,您需要获取该值,前缀为:
。