星期四, 三月 25, 2004

如何在JSF中使用Javascript进行简单数据校验(validate)

JSF会自动concat 上层组件的ID作为到下层组件ID一部分.极其麻烦.因为分隔符号为":",
所以,所有变量名为"<..>:"的方式.
如下:
<h:view>
<h:selectManyCheckbox id="toggleAll" onclick="ToggleAll(this);">
<f:selectItem id="ALL" itemLabel="ALL Selected" itemValue=""/>
</h:selectManyCheckbox>
<h:selectManyCheckbox id="bb" onclick="Toggle(this);" >
<f:selectItem itemValue="aaaa" itemLabel="苹果"/>
<f:selectItem itemValue="bbbb" itemLabel="橡胶"/>
<f:selectItem itemValue="cccc" itemLabel="西瓜"/>
<f:selectItem itemValue="dddd" itemLabel="草梅"/>
<f:selectItem itemValue="eeee" itemLabel="蜜枣"/>
<f:selectItem itemValue="ffff" itemLabel="土豆"/>
</h:selectManyCheckbox>
</h:view>

如果想在Javascript表中访问这些对象,必须使用elements对象来引用(冒出一头冷汗)
document.forms["messageList"].elements["messageList:bb"].checked=true;
<script>
function Toggle(e)
{
if (e.checked) {
document.forms["messageList"].elements["messageList:toggleAll"].checked = AllChecked();
}
else {
document.forms["messageList"].elements["messageList:toggleAll"].checked = false;
}
}
</script>