Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 仅当显示特定的h:message时才显示JSF元素_Jsf 2 - Fatal编程技术网

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}" />