gpt4 book ai didi

jsf-2 - 仅当特定 h :message is being displayed 时才显示 JSF 元素

转载 作者:行者123 更新时间:2023-12-04 18:43:48 25 4
gpt4 key购买 nike

我有一个 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:message for="new_password"/> 时可见正在显示

到目前为止我找不到任何东西......

最佳答案

如果您的环境支持 EL 2.2,那么您可以检查是否 FacesContext#getMessageList() 不是 empty对于特定的客户端 ID。

<p:password binding="#{new_password}" ... />
<h:commandLink ... rendered="#{not empty facesContext.getMessageList(new_password.clientId)}" />

如果消息是由于验证错误而显示的,那么您也可以检查 UIInput#isValid() 与消息关联的组件的状态。
<p:password binding="#{new_password}" ... />
<h:commandLink ... rendered="#{not new_password.valid}" />

请注意,手动向上下文添加人脸消息不会将输入组件标记为无效。因此,要么是真正的 Validator应该使用它抛出 ValidatorException ,或明确的 input.setValid(false)调用必须以编程方式完成。

关于jsf-2 - 仅当特定 h :message is being displayed 时才显示 JSF 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18835552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com