【问题标题】:How to check if a JSF UIComponent is valid in a jsp file?如何检查 JSF UIComponent 在 jsp 文件中是否有效?
【发布时间】:2010-07-02 06:34:42
【问题描述】:

在 jsp 文件中,有没有办法在该页面上找到一个组件并检查该组件是否有效。

假设我有一个输入字段,以及一个带有复杂 html 的 panelGroup,如果输入字段上的验证失败,则应该显示该面板组。我真正在寻找的是 panelGroup 上渲染属性的 EL 表达式。

我尝试使用自定义验证器函数,在这里将 panelGroups 呈现的值设置为 true。但随后它在必填字段上失败,因为当该字段为空时,自定义验证器函数从未运行。

现在我完全避免了常规验证,并使用一些相当丑陋的代码来验证提交时的所有内容。然后将结果存储在许多实例布尔值中,用于在 panelGroups 中呈现。

非常感谢任何帮助

【问题讨论】:

    标签: jsp jsf validation rendered-attribute


    【解决方案1】:

    您可以使用UIInput#isValid()

    这是一个启动示例:

    <h:form>
        <h:inputText binding="#{input}" value="#{bean.input}" required="true" />
        <h:commandButton value="submit" action="#{bean.submit}" />
        <h:messages />
    </h:form>
    <h:outputText value="input is not valid!" rendered="#{!input.valid}" />
    

    请注意,您在 binding 属性中使用的名称不应与任何请求范围属性/bean 的名称冲突。

    【讨论】:

    • 非常感谢,这正是我想要的
    • 不客气。顺便说一句,您知道&lt;h:message&gt; 的作用或多或少相同吗?
    • 是的,我查看了消息,但是当错误消息比字符串更复杂时,找不到使用它的好方法。大多数已指定给我的错误消息中都有 html 列表或其他 html..
    • 啊,是的,您想在消息中显示 HTML。考虑覆盖渲染器。另见balusc.blogspot.com/2010/07/using-html-in-jsf-messages.html
    • @MarkW:在 JSF 2.x 中没有必要(注意 OP 使用的是 JSF 1.x)。您可以在组件上下文中的任何位置使用隐式 EL 对象 #{component}。另见例如以stackoverflow.com/a/3140062 为例。
    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 2011-12-08
    • 2013-12-07
    • 1970-01-01
    • 2010-10-27
    • 2015-11-15
    相关资源
    最近更新 更多