【发布时间】:2015-09-22 17:09:49
【问题描述】:
在基于 ajax 调用 keyup 启用/禁用 selectManyCheckbox 组件中的特定项目时,我需要您的帮助。
当页面加载时,我正在触发以下方法来填充表单中的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>
页面加载后,所有复选框均已启用,当用户在inputText 中输入employeeCode 时,将触发一个ajax 来调用获取employeeName 的方法并检查是否有贷款,如果有贷款,则复选框应启用,否则禁用。
总结一下我的问题,我想要的是当变量temp的值等于yes时,我只需要禁用loan复选框,而另一个项目Employment应该保持启用,那么我该怎么做呢?
bean代码是:
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");
}
那么请你帮忙。
【问题讨论】:
-
@BalusC 我已经编辑了主题,使其更清晰,并解释了更多代码,请您指导和协助
-
@BalusC hrBooleanCertificate 我在 hrCertificate 类中定义了它。 hrBooleanCertificate 指的是 init() 方法中的 boolean false,在该方法中,一开始所有复选框都应启用,但随后我不知道下一步该做什么来设置 Loan item disabled
-
所以你的意思是我应该在我的 bean 中定义一个名为 hrBooleanCertificate 的新布尔变量,并在默认情况下将其初始化为 false,然后在 IF 语句中根据条件,然后更新组件?这只会对贷款复选框进行吗?
-
@BalusC 以上正确吗?
标签: ajax list jsf primefaces selectmanycheckbox