ツリーノード内のすべての項目をチェックするチェックボックスを作成しようとしています。私はJSFが初めてなので、これをテーブルではなくツリーに実装する方法にかなり困惑しています。これは現在のコードです:
<rich:panel style="width:400px;">
<h:selectBooleanCheckbox id="vehicleAll" onclick="selectAllModel(this.checked);">
</h:selectBooleanCheckbox>
<h:outputText value=" ALL"/>
<rich:tree id="vehicleTree" switchType="client"
value="#{applicationScope.demoModelGrpList}" var="node" ajaxKeys="#{null}"
binding="#{demoRptController.vehicleUiTree}"
nodeSelectListener="#{demoRptController.selectionListener}"
changeExpandListener="#{demoRptController.expansionListener}"
ajaxSubmitSelection="true">
<rich:treeNode id="modelNode" ajaxSingle="true"
icon="/images/pixel_node.gif" iconLeaf="/images/pixel_node.gif">
<h:selectBooleanCheckbox id="cbxNode" value="#{node.selected}" style="position:relative; float:left; left:-22px;" class="vcBx">
</h:selectBooleanCheckbox>
<h:outputText value="#{node.name}" style="position:relative; float:left; left:-16px;"/>
</rich:treeNode>
</rich:tree>
</rich:panel>
スクリプトは次のとおりです。
<script type="text/javascript">
<![CDATA[
function selectAllModel(checks) {
alert("calling select all");
var array = document.getElementsByTagName("input");
for(var i = 0; i < array.length; i++)
{
if(array[i].type == "checkbox")
{
if(array[i].className == "vcBx")
{
array[i].checked = checks;
}
}
}
}
]]>
</script>
テスト目的でアラートをそこに配置しました。呼び出されていません。構文が正しいと確信しているので、頭を悩ませています。