我有一个小型的JSF应用程序,用户需要输入一些关于他们自己的数据。 对于页面上需要=“true”的每个组件,我想根据字段中是否有数据显示图标。
我的问题是,当页面最初显示时,所有字段都有效,即使它们中没有任何数据。
所以我的问题是如何根据字段中是否有数据将组件设置为无效?
提交页面后(或组件失去焦点后)图标显示正确,只有在初始页面加载时才出现问题。 (即没有发布数据)
以下是我需要验证的组件的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>
任何帮助将不胜感激。
答案 0 :(得分:1)
你可以:
window.onload()
使用javascript迭代所有输入并触发模糊事件window.onload()
致电<a4j:jsFunction>
reRender
为父母<h:panelGroup>
致所有投入。