我正在使用JSF 2.0。我有两个复选框(都是h:selectBooleanCheckBox)。要求是在单击第一个复选框时启用第二个复选框。代码如下所示:
<h:selectBooleanCheckbox id="chkbox1"
value="#{dataTableRow.employeeMBean.displayStatus}"
onclick="updateDisplayStatus(this);return false;">
<a4j:ajax execute="chkbox1" render="chkbox1, chkbox2"></a4j:ajax>
</h:selectBooleanCheckbox>
<h:selectBooleanCheckbox id="chkbox2"
value="#{dataTableRow.employeeMBean.publicStatus}"
disabled="#{!dataTableRow.employeeMBean.displayStatus}">
</h:selectBooleanCheckbox>
function updatePublicStatus(obj){
var currentValue = obj.checked;
updatePublicStatusJS(currentValue);
if(currentValue == true){
document.getElementById("summaryForm:solutionsTable:"+solnDtIdx+":editPanel:0:chkbox2").disabled = "false";
}
else{
document.getElementById("summaryForm:solutionsTable:"+solnDtIdx+":editPanel:0:chkbox2").disabled = "disabled";
}
}
<a4j:jsFunction name="updatePublicStatusJS" action="#{employeeMBean.updatePublicStatus}"
render="chkbox2">
<a4j:param name="param1" assignTo="#{dataTableRow.employeeMBean.displayStatus}"/>
</a4j:jsFunction>
有两个问题:
a4j:jsFunction
的行动永远不会得到
调用。我不确定为什么第二个复选框未启用。 如果需要更多代码或解释,请告诉我。
提前致谢。
答案 0 :(得分:0)
根本原因:不需要<a4j:jsFunction>
。所以我删除了onclick并使用<h:selectBooleanCheckbox>
执行了<a4j:ajax execute="@this" render="chkbox2"/>
。这样,复选框值会在我选择第一个复选框后立即设置,第二个复选框将使用更新的值进行渲染(因为'render'属性)。