将JSF组件的初始状态设置为无效

时间:2010-06-05 20:37:33

标签: jsf richfaces

我有一个小型的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>

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

你可以:

  • on window.onload()使用javascript迭代所有输入并触发模糊事件
  • window.onload()致电<a4j:jsFunction> reRender为父母<h:panelGroup>致所有投入。