Jsf 2 仅当显示特定的h:message时才显示JSF元素
我有一个带有几个输入的Jsf 2 仅当显示特定的h:message时才显示JSF元素,jsf-2,Jsf 2,我有一个带有几个输入的h:form,每个输入都有自己的h:message,我正在寻找一种方法来显示(使用render或分配一些styleClass)一些其他元素,只有在显示特定的h:message时才显示(并且在未显示h:message时隐藏) 这里是一段代码片段 <li> <h:panelGroup id="current_password_wrapper"> <p:password value="#{myBean.myCurrPass}"
h:form
,每个输入都有自己的h:message
,我正在寻找一种方法来显示(使用render
或分配一些styleClass
)一些其他元素,只有在显示特定的h:message
时才显示(并且在未显示h:message
时隐藏)
这里是一段代码片段
<li>
<h:panelGroup id="current_password_wrapper">
<p:password value="#{myBean.myCurrPass}" id="current_password" required="true"
styleClass="required_field" />
</h:panelGroup>
<h:message for="current_password"/>
</li>
<li>
<h:panelGroup id="new_password_wrapper">
<p:password value="#{myBean.myNewPass}" id="new_password" required="true"/>
</h:panelGroup>
<h:message for="new_password"/>
<h:commandLink value="my value"/>
</li>
我想使h:commandLink
仅在显示
时可见
到目前为止,我找不到任何东西…我想,有了这个问题的答案,您的需求可以存档: 我想你可以这样做:
<h:outputText value="output text" rendered="#{bean.messageIndexes['form:input1'] > 0}" />
如果您的环境支持EL 2.2,那么您可以检查特定客户端ID的
是否为空
<p:password binding="#{new_password}" ... />
<h:commandLink ... rendered="#{not empty facesContext.getMessageList(new_password.clientId)}" />
请注意,手动将faces消息添加到上下文不会将输入组件标记为无效。因此,要么使用引发验证异常的true验证程序
,要么使用显式的输入。setValid(false)
调用必须以编程方式完成。是否要为输入元素创建某种验证?消息是否显示在某个组件的验证错误上?如果是,哪一个?@BalusC,当myNewPass
中的值无效时,我用FacesContext.getCurrentInstance().addMessage
从我的bean中填充
作为新密码id(我也使用该h:message作为required=“true”
但是,使用自定义验证器为myNewPass验证错误(正在bean中检查)添加另一条h:message不会有问题,您也可以存档目标。谢谢,使用input.setValid(false)
和rendered=“#{非新密码.valid}”
。但是,有没有办法根据某个h:消息是否可见来显示某个元素?我想在上使用绑定
好的,现在就知道了,谢谢@BalusC听起来像是一个适合omnifaces的好主意<代码>
@Ben:
已经这么做了:@BalusC这帮我节省了很多时间。谢谢
<p:password binding="#{new_password}" ... />
<h:commandLink ... rendered="#{not new_password.valid}" />