如何验证JSF上是否填充了outputText?

Bru*_*cca 2 validation error-handling jsf primefaces

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

好吧,所以,我有一个按钮来添加导致模态的人,填充字段和搜索按钮...这个搜索按钮,导致另一个模态,这是一个简单的人搜索,你输入名称,选择从列表中选择一个,搜索模式关闭,名称转到前一个模态的outputText.

问题是,我该如何验证这个字段?我的意思是,我可以放置其他字段required = true,设置requiredMessage和ap:message.

一切正常,值,按钮,所有工作,除了该字段的验证.为了给予更多的许可,这就是我需要的:

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

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

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

<h:outputText id="personName" title="Participant" value="#{projectMB.projectParticipant.person.name}"/>
Run Code Online (Sandbox Code Playgroud)

在h:outputText字段中,我想要的是简单到必需的东西="true"requiredMessage ="你必须选择一个人.".

我希望我说清楚,谢谢.

编辑:它必须阻止提交,如果我只更新:在MB上设置错误消息的growl,模态将关闭,我不想要那个.

我用来关闭模态的按钮有:

oncomplete="if (args &amp;&amp; !args.validationFailed) PF('modalAddParticipant').hide();"
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 6

JSF只会验证输入而不是输出.

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

<h:outputText ... />
<h:inputHidden ... required="true" />
Run Code Online (Sandbox Code Playgroud)

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

<h:inputText ... styleClass="looks-like-output" required="true" readonly="#{facesContext.currentPhaseId.ordinal eq 6}" />
Run Code Online (Sandbox Code Playgroud)