我有以下观点:
查看:
<div class="#{formAccountRegister.formTest}">
<h:inputText id="field-firstname" value="#{formAccountRegister.account.person.firstName}" required="true" requiredMessage="#{account['validate.required']}" styleClass="#{ component.valid ? 'default' : 'default error'}">
<f:validator validatorId="validatorNameFirst"/>
<f:ajax event="focus" listener="#{formAccountRegister.changeIt(event)}"/>
<f:ajax event="blur" render="field-firstname message-firstname"/>
</h:inputText>
</div>
当class
获得div
时,我想更改input
的{{1}}。一切正常,但只有验证通过。如果验证尚未通过,则方法focus
不会执行。我使用chageIt(event)
。
我怎样才能让它发挥作用?
谢谢。
答案 0 :(得分:2)
JSF有6个生命周期阶段http://docs.oracle.com/javaee/1.4/tutorial/doc/JSFIntro10.html
第三个是Validation
阶段。如果验证成功,则仅执行后续阶段Update Modal Values
(第4个)和Invoke Application Phase
(第5个)。由于验证失败,因此跳过第4和第5阶段并直接执行Render response
(第6)阶段。这就是为什么没有调用焦点事件的监听器,它应该在第5阶段执行,这是根据jsf框架的预期行为。
如果要更改CSS,则可以使用onfocus
的{{1}}属性并在客户端执行此操作。
希望这有帮助。