Jsf 根据ui:重复列表中特定复选框元素的值禁用InputExtArea元素?

Jsf 根据ui:重复列表中特定复选框元素的值禁用InputExtArea元素?,jsf,Jsf,如何根据ui:repeat列表中特定复选框的值动态禁用inputTextarea <ui:repeat var="eligibilityReason" value="#{itemDetails.itemSelected.listEligibilityReasons}"> <h:selectBooleanCheckbox id="eligibilityReasonOptId"

如何根据
ui:repeat
列表中特定复选框的值动态禁用
inputTextarea

<ui:repeat var="eligibilityReason"
           value="#{itemDetails.itemSelected.listEligibilityReasons}">
    <h:selectBooleanCheckbox id="eligibilityReasonOptId"
                             value="#{eligibilityReason.selected}"/>
    <h:outputText value="#{eligibilityReason.eligiReasonDescr}"/>
</ui:repeat>
    
<h:inputTextarea id="ineligiReasonOtherId"
                 value="#{itemDetails.itemSelected.ineligiReasonOther}" 
                 disabled="???" />

listEligibilityReasons
获取一个
列表
。因此,我如何仅根据
eligiReason='99'
的选中/复选框值动态启用/禁用
inputExtArea

类似的操作应该可以完成。ajax事件仅针对第99项触发,并调用Java方法为文本区域设置布尔标志。这是未经测试,但给你的想法,你需要做什么


爪哇:

boolean textAreaEnabled=false;
公共失效原因99(AjaxBehaviorEvent事件){
textAreaEnabled=event.getSource().getValue();
}

这是否应该立即发生?还是应该在提交表格时发生?根据您的目标,方法会略有不同。如果使用表单,则可以将
valueChangeListener
属性与表单提交结合使用来进行更新。如果我们不是在讨论表单提交,那么最好的方法是在
selectBooleanCheckbox
下使用
f:ajax
标记,并将侦听器与
execute
属性结合使用,以更新
inputTextArea
的目标。如果你能指定,我可以立即给你看一个完整的例子。复选框的重复列表总共有9个复选框,我希望只有选中第9个复选框时才能启用InputExtArea。谢谢有点像这样。对于PrimeFaces,当您触发ajax事件以确定它应该更新和显示/隐藏的内容时,您可能还希望
update=“InqualificationReasonOtherId”
。如果你使用香草JSF,你可以使用
render
f:ajax
来实现基本相同的功能。谢谢你更新了我的答案。
private String eligiReason;
private String eligiReasonDescr;
private boolean selected;