我已经为注册页面提供了这个.xhtml文件:
<h:inputSecret id="password"
value="#{registraCliente.password}"
required="true"
binding="#{password}"
requiredMessage="Password obbligatoria"
validatorMessage="Password non valida">
<f:validateRegex pattern="(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$/)" />
</h:inputSecret>
<h:message for="password" style="color:red" />
<h:inputSecret id="confermaPassword"
required="true"
value="#{registraCliente.confermaPassword}"
requiredMessage="Devi inserire di nuovo la password">
<f:validator validatorId="passwordValidator" />
<f:attribute name="password" value="#{password}" />
</h:inputSecret>
<h:message for="confermaPassword" style="color:red" />
我希望如此:如果两个输入密码不同,则会显示错误。但如果它们相同,则允许注册。 我还添加了一个validateRegex标签来检查密码的“强度”,但那时我遇到了一些问题。 当我启动服务器并填写表单(在两个输入文本中写入相同的密码)时,它应该注册,但它不会,它保留在同一个xhtml页面上。
Eclipse的控制台给了我这个警告:
无法验证具有空值的组件:j_id_4:confermaPassword
它是怎么来的?
passwordValidator
(下面评论中的链接)是一个实现Validator的bean,我从Balusc的博客文章中复制了它,我应该说是一个JSF大师:D