【问题标题】:Setting initial state of a JSF component to invalid将 JSF 组件的初始状态设置为无效
【发布时间】:2010-06-06 14:17:05
【问题描述】:

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

我们将不胜感激。

【问题讨论】:

    标签: jsf richfaces


    【解决方案1】:

    你可以:

    • window.onload() 上使用 javascript 迭代所有输入并触发模糊事件
    • window.onload() 上调用&lt;a4j:jsFunction&gt; 其中reRenders 是所有输入的父&lt;h:panelGroup&gt;

    【讨论】:

    • 谢谢 Bozho 我实现了一个版本,我使用 a4j:jsFunction 来触发验证,并且有效:) 设置组件状态而不必诉诸“提交”会很好面板(您可以在页面打开时看到组件状态的变化),但我可以接受这个解决方案。
    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多