0

selectManyCheckbox我需要您的帮助来启用/禁用基于 ajax 调用 keyup的组件中的特定项目。

当页面加载时,我正在触发以下方法来填充selectManyCheckbox表单中的项目:

 @PostConstruct

    public void init() throws SQLException {

    this.hrCertificatesList.add(new hrCertificate(("Employment"), "CE", false));

    this.hrCertificatesList.add(new hrCertificate(("Loan"), "LC", false));

}

这是jsf代码:

  <p:inputText id="selectedEmployee" value="#{HRRequest.selectedEmployeeCode}">

     <p:ajax event="keyup" update="employeeName" listener="#{HRRequest.getEmployeeName}" />

   </p:inputText>

<h:outputText id="employeeName" value="#{HRRequest.selectedEmployeeName}" />

<p:selectManyCheckbox id="hrCertificates" value="#{HRRequest.selectedHRCertificates}">
 <f:selectItems value="#{HRRequest.hrCertificatesList}" var="hrCertificate" 
itemLabel="#{hrCertificate.hrCertificateName}"
    itemValue="#{hrCertificate.hrCertificateCode}" itemDisabled="#{hrCertificate.hrBooleanCertificate}"/>

    </p:selectManyCheckbox>

页面加载后,所有复选框都被启用,当用户在其中输入employeeCode时inputText,将触发一个ajax来调用一个方法来获取employeeName并检查是否有贷款,如果有贷款,那么复选框应该是启用,否则禁用。

总结一下我的问题,我想要的是当变量 temp 的值等于 yes 时,我只需要禁用贷款复选框,而其他项目就业应该保持启用,那么我该怎么做呢?

豆代码是:

 public String getEmployeeName() throws SQLException {
     if (temp.equals("Yes"))
{ 
//How to enable and disable the Loan checkbox only and to update the form view
RequestContext.getCurrentInstance().update(":HRform:hrCertificates");    
}

所以你能帮忙吗?

4

1 回答 1

0

itemDisabled="#{hrCertificate.hrBooleanCertificate}"只需以评估的方式操作模型,true而不是false让视图知道它必须做什么。

一种方法可能是:

this.hrCertificatesList.get(1).setHrBooleanCertificate(true);
于 2015-07-06T17:18:28.693 回答