将JSF组件的初始状态设置为无效
问题描述:
我有一个小型的JSF应用程序,用户需要输入有关他们自己的一些数据。 对于页面上每个要求=“true”的组件,我想根据字段中是否有数据显示图标。将JSF组件的初始状态设置为无效
我的问题是,当页面最初显示时,所有字段都是有效的,即使它们中没有任何数据。
所以我的问题是如何设置一个组件无效的基础上,如果有数据在该领域或没有?
页面提交后(或组件失去焦点后)图标显示正常,它只在初始页面加载时出现问题。 (即不存在后的数据)
这里是我的需要验证的组件XHTML:
<s:decorate id="employeeIdDecoration" template="/general/util/errorStyle.xhtml">
<ui:define name="label">#{messages['userdetails.employeeId']}</ui:define>
<h:inputText value="#{authenticator.user.employeeId}" required="true">
<a4j:support event="onblur" reRender="employeeIdDecoration" bypassUpdates="true"/>
</h:inputText>
模板:
<s:label styleClass="#{invalid?'error':''}">
<ui:insert name="label"/>
<s:span styleClass="required" rendered="#{required}">*</s:span>
</s:label>
<span class="#{invalid?'error':''}">
<s:validateAll>
<ui:insert/>
</s:validateAll>
<h:graphicImage value="/resources/redx.png" rendered="#{invalid}"
height="16"
width="16"
style="vertical-align:middle;"/>
<h:graphicImage value="/resources/Checkmark.png" rendered="#{!invalid}"
height="16"
width="16"
style="vertical-align:middle;"/>
</span>
任何帮助将是赞赏。
答
您可以:
- 上
window.onload()
迭代使用javascript所有输入和触发blur事件 - 上
window.onload()
呼叫<a4j:jsFunction>
这reRender
是个父<h:panelGroup>
所有的输入。
感谢Bozho 我实现了一个版本,我用A4J:jsFunction触发验证,而工程:) 这本来是很高兴有设置组件的状态,而不必诉诸“提交“面板(您可以在打开页面时看到组件更改的状态),但我可以接受此解决方案。 – mhylle 2010-06-06 06:49:55