让我解释一下这个场景,假设我有一个包含人员列表的类Project,你可以搜索一个人并在项目上写下他的任务。
好吧,所以,我有一个按钮来添加导致模态的人,带有要填充的字段和搜索按钮...这个搜索按钮,导致另一个模态,这是一个简单的人搜索,你键入name,从列表中选择一个,搜索模式关闭,名称转到上一个模态的outputText。
问题是,如何验证此字段?我的意思是,我可以放置其他字段required = true,设置requiredMessage和p:消息。
除了验证此字段外,一切正常,值,按钮都可以正常工作。为了给出更多的许可,这就是我所需要的:
这是我的按钮,打开模态,只有在需要条件时才会渲染,一切都很好。
<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}"/>
我想要的东西是简单的必需=“true”requiredMessage =“你必须选择一个人。”,在h:outputText字段中。
我希望我说清楚,谢谢。
编辑它必须阻止提交,如果我只更新:growl并在MB上设置错误消息,模式将关闭,我不想要那样。
我用来关闭模态的按钮有:
oncomplete="if (args && !args.validationFailed) PF('modalAddParticipant').hide();"
答案 0 :(得分:6)
JSF只会验证输入,而不是输出。
最直接的方法是将其设置为隐藏的输入值。
<h:outputText ... />
<h:inputHidden ... required="true" />
或者,使用一个readonly输入字段,它几乎没有CSS的帮助,如输出文本(没有边框等),并且仅在渲染响应期间标记为readonly(否则JSF将不会在其他阶段处理它)。
<h:inputText ... styleClass="looks-like-output" required="true" readonly="#{facesContext.currentPhaseId.ordinal eq 6}" />