要注意的是:不能在JavaScript函数中使用如下类似语法来访问表单组件: documents.forms.registerForm.password 而应使用: documents.forms.registerForm["registerForm:password"].value
这是因为JSF解释上面<h:form id="registerForm">...</h:form>一段时会生成如下代码:
<form id="registerForm" method="post" action="/javascript/index.faces;jsessionid=7A029269C9ECF42CF553C9B52C824E2E" enctype="application/x-www-form-urlencoded">
<table> <tr> <td> <span class="emphasis">Name:</span> </td> <td> <input type="text" name="registerForm:_id2" /> </td> </tr> <tr> <td> Password: </td> <td> <input id="registerForm:password" type="password" name="registerForm:password" value="" /> </td> </tr> <tr> <td> Confirm Password: </td> <td> <input id="registerForm:passwordConfirm" type="password" name="registerForm:passwordConfirm" value="" /> </td> </tr> </table> <input type="button" name="registerForm:_id5" value="Submit Form" onclick="checkPassword(this.form)" /> <input type="hidden" name="registerForm" value="registerForm" /></form>
JSF产生的所有表单控件都有符合formName:componentName格式的名称,这里的formName表示控件的表单的 名称,而componentName表示控件名称。如果没有指定id属性,则JSF框架会自动创建标识符,就象上面的HTML 片段中的按钮一样。因此,要访问上面的密码字段,必须使用下列方法: documents.forms.registerForm["registerForm:password"].value
|