我需要您的帮助来禁用和启用项目selectManyCheckbox
jsf 页面中的组件。首先,selectManyCheckbox 组件显示三个复选框,分别是(Loan - Health - Transfer)。该列表将从具有以下代码的 bean 中填充:
private List<hrCertificate> hrCertificatesList = new ArrayList<hrCertificate>();
//Getter and Setter
Private String loanFlag="";
@PostConstruct
public void init() {
this.hrCertificatesList.add(new hrCertificate(("Loan"), "LC"));
this.hrCertificatesList.add(new hrCertificate(("Health"), "HI"));
this.hrCertificatesList.add(new hrCertificate(("Trasnfer"), "TE"));
}
在同一个 bean 中,我将运行一个 SQL 语句,该语句将返回 Yes 或 No,并将该值添加到loanFlag
因此,如果标志=“Y”,我需要启用贷款复选框,以便用户可以选择它,否则我需要从selectManyCheckbox
。问题是我在应用逻辑来禁用和启用该项目时遇到困难selectManyCheckbox
在上面的代码中,我一直列出并启用它们。
selectManyCheckbox 的代码:
<p:selectManyCheckbox id="hrCertificates" value="#{user.selectedHRCertificates}" layout="pageDirectio>
<f:selectItems value="#{user.hrCertificatesList}"
var="hrCertificate" itemLabel="#{hrCertificate.hrCertificateName}"
itemValue="#{hrCertificate.hrCertificateCode}"/>
</p:selectManyCheckbox>
那么如何应用逻辑
您可以编辑您的 hrCertificate 类来添加disabled
布尔字段?如果是,那么您可以添加itemDisabled="#{hrCerticate.disabled}"
给你的f:selectItems
这应该是最简单的解决方案。
另一种选择是使用Map<hrCertificate, Boolean>
代替List<hrCertificate>
.
private Map<hrCertificate, Boolean> hrCertificatesMap = new HashMap<hrCertificate, Boolean>();
@PostConstruct
public void init() {
hrCertificatesMap.put(new hrCertificate(("Loan"), "LC"), null);
hrCertificatesMap.put(new hrCertificate(("Health"), "HI"), null);
hrCertificatesMap.put(new hrCertificate(("Trasnfer"), "TE"), null);
}
// Then when you're done with your SQL query, update your Map to add the corresponding boolean values...
.xhtml
<p:selectManyCheckbox id="hrCertificates" value="#{user.selectedHRCertificates}" layout="pageDirectio>
<f:selectItems value="#{user.hrCertificatesMap.keySet().toArray()}" var="hrCertificate" itemLabel="#{hrCertificate.hrCertificateName}" itemValue="#{hrCertificate.hrCertificateCode}" itemDisabled="#{user.hrCertificatesMap.get(hrCertificate)}" />
</p:selectManyCheckbox>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)