通过选择复选框启用和禁用组件

时间:2011-07-21 06:00:59

标签: jsf jsf-2 primefaces

我有组件,我正在尝试禁用下面的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未发送到服务器。 我也尝试过使用。检查指示符出现但面板未刷新

如何通过复选框右键使用更新?

2 个答案:

答案 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>