我有组件,我正在尝试禁用下面的panelGrid。
<h:selectBooleanCheckbox id="checkboxId" value="#{bean.checked}">
<p:ajax update="panelId" event="click"/>
</h:selectBooleanCheckbox>
<h:panelGrid id="panelId" rendered="#{!bean.checked}">
<h:outputLabel>some text</h:outputLabel>
<h:outputLabel>#registrationBB.registrationModel.homeAddress.actualAddressMathWithRegistration}</h:outputLabel>
</h:panelGrid>
因此,单击复选框不起作用。检查指示符甚至不出现在复选框组件和值bean上:checked未发送到服务器。 我也尝试过使用。检查指示符出现但面板未刷新
如何通过复选框右键使用更新?
答案 0 :(得分:13)
下面的例子就是我的工作:
<h:form>
<h:selectBooleanCheckbox id="checkboxId" value="#{indexBean.checked}" >
<p:ajax event="change" update="panelId" />
</h:selectBooleanCheckbox>
<h:panelGrid id="panelId" style="border:solid 1px black;" >
<h:outputLabel rendered="#{!indexBean.checked}" >some text</h:outputLabel>
<h:outputText rendered="#{!indexBean.checked}" value="some text 2" />
</h:panelGrid>
</h:form>
我必须更改<p:ajax>
事件,点击更改以使复选框正常工作。另一个问题是,如果您不呈现<h:panelGrid>
无法找到更新的ID,那么您希望将呈现的属性移动到<h:panelGrid>
内的组件,但仍然更新{{1} }}
答案 1 :(得分:0)
略有变化。您的辅助bean字段不必是布尔值。如果你有一个带有字段的支持bean:
private List<SelectItem> myStringList;
private String myString;
然后在表单加载之前初始化myStringList:
myStringList = Arrays.asList(new SelectItem("one", "The Number One"),
new SelectItem("two", "The number two")
);
然后你可以这样做:
<h:form>
<p:selectOneRadio id="ctlSearchType" value="#{mybean.myString}" layout="grid" columns="3">
<f:selectItems value="#{mybean.myStringList}" />
<p:ajax event="change" update="ctlone,ctltwo"/>
</p:selectOneRadio>
<h:panelGrid id="panelId" style="border:solid 1px black;" >
<p:outputLabel for="ctlone" value="Field one:"/>
<p:inputText value="#{mybean.whatever}" id="ctlone" size="8" maxlength="10" disabled="#{mybean.myString eq 'one'}"/>
<p:outputLabel for="ctltwo" value="Field two:"/>
<p:inputText value="#{mybean.whatevertwo}" id="ctltwo" size="8" maxlength="10" disabled="#{mybean.myString eq 'two'}"/>
</h:panelGrid>
</h:form>