【问题标题】:How to validate if a outputText is filled on JSF?如何验证 JSF 上是否填充了 outputText?
【发布时间】:2016-02-18 20:29:17
【问题描述】:

让我解释一下这个场景,假设我有一个包含人员列表的类 Project,你可以搜索一个人并在项目上写下他的任务。

好的,所以,我有一个添加人员的按钮,该按钮导致一个模态,带有要填充的字段和一个搜索按钮...这个搜索按钮导致另一个模态,这是一个简单的人员搜索,你输入名称,从列表中选择一个,搜索模式关闭,名称转到上一个模式的输出文本。

问题是,我如何验证这个字段?我的意思是,我可以只输入 required=true 的其他字段,设置 requiredMessage 和 p:message。

一切正常,值,按钮,除了验证这个字段外,一切正常。为了更清楚一点,这就是我需要的:

这是我的按钮,打开模态,只在需要条件时才渲染,都很好。

<p:commandButton icon="ui-icon-search" validateClient="true" type="button" onclick="PF('modalSearchPerson').show();" rendered="#{projectMB.projectParticipant.type == 'STUDENT'}"/>

这是显示参与者姓名的文本,由 modalSearchPerson 更新。

<h:outputText id="personName" title="Participant" value="#{projectMB.projectParticipant.person.name}"/>

我想要的是简单的,比如 required="true" requiredMessage="You must choose a person.",在 h:outputText 字段上。

希望我说清楚了,谢谢。

编辑: 它必须阻止提交,如果我只用 MB 上设置的错误消息更新 :growl,模式将关闭,我不希望这样。

我用来不关闭模式的按钮有:

oncomplete="if (args &amp;&amp; !args.validationFailed) PF('modalAddParticipant').hide();"

【问题讨论】:

    标签: validation jsf primefaces error-handling


    【解决方案1】:

    JSF 只会验证输入,而不是输出。

    最直接的方法是将其设置为隐藏输入值。

    <h:outputText value="#{bean.output}" />
    <h:inputHidden value="#{bean.output}" required="true" />
    

    或者,使用只读输入字段,它几乎没有 CSS 样式的帮助,如输出文本(无边框等),并且仅在呈现响应期间标记为只读(否则 JSF 不会在其他阶段处理它)。

    <h:inputText value="#{bean.output}" styleClass="looks-like-output" required="true" readonly="#{facesContext.currentPhaseId.ordinal eq 6}" />
    

    【讨论】:

    • 在这两种情况下,我都会得到一个原因:javax.el.PropertyNotFoundException: Target Unreachable, 'pessoaFisica' returned null... 这是预期的,因为我的对象(在示例中)projectMB.projectParticipant。未设置人员,因为您需要单击搜索按钮并选择一个进行设置。
    • 这是一个不同的问题,在此回答 stackoverflow.com/questions/30128395/…
    • 像一个魅力一样工作,我准备了对象 projectParticipant.person,带有一个 person.name = "",现在它解决了 null 问题和一个隐藏字段所需的问题。谢谢。
    • 这个“#{facesContext.currentPhaseId.ordinal eq 6}”刚刚解决了我的另一个问题......再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2019-03-03
    • 2013-01-31
    • 1970-01-01
    • 2012-04-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多