gpt4 book ai didi

validation - 如何为特定的 commandLink/commandButton/form 显示 FacesMessage?

转载 作者:行者123 更新时间:2023-12-03 08:29:11 26 4
gpt4 key购买 nike

单击提交按钮时,我必须进行应用程序/业务级别验证并将错误消息关联到链接。由于我不能这样做,有什么方法可以将错误消息放在链接的顶部。

我对业务逻辑的验证是在 action 方法中

FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
message.setSummary("ERROR MESSAGE");
message.setDetail("ERROR MESSAGE");
FacesContext.getCurrentInstance().addMessage("linkId", message);

非常感谢帮助

最佳答案

FacesContext#addMessage()的第一个参数必须是客户端 ID,而不是组件 ID。客户端 ID 是您在生成的 HTML 输出中看到的 HTML 元素 ID(正如您可以通过右键单击页面和在浏览器中查看源代码看到的)。对于表单中的 JSF 输入和命令组件,这通常以表单的 ID 为前缀。

因此,对于以下链接,

<h:form id="formId">
...
<h:commandLink id="linkId" ... />
<h:message for="linkId" />
</h:form>

您应该按如下方式添加消息:
FacesContext.getCurrentInstance().addMessage("formId:linkId", message);

然而,在操作方法中显示全局消息的更规范的方法就是使用 <h:messages globalOnly="true" />您可以使用 null 填充消息客户 ID。

所以,
<h:form id="formId">
...
<h:commandLink id="linkId" ... />
<h:messages globalOnly="true" />
</h:form>


FacesContext.getCurrentInstance().addMessage(null, message);

也可以看看:
  • How to use JSF h:messages better?
  • Creating FacesMessage in action method outside JSF conversion/validation mechanism?
  • 关于validation - 如何为特定的 commandLink/commandButton/form 显示 FacesMessage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025782/

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