java - 未显示的面孔消息

标签 java jsf primefaces

我有一个具有 sendmail 功能的页面。这是一个简单的富文本字段,当按下发送按钮时,会发送一封以文本字段作为正文的邮件。这有效。但我想显示一条消息“邮件发送”,以便用户看到邮件已发送。 我可以通过执行以下命令来做到这一点:

addFacesMessage(FacesMessage.SEVERITY_INFO, getMsg("common_mail_send_ok") + " (" + toAddresses[0] + ")");

此消息显示在字段中。 但这位于我页面的完全不同的部分,因此我想在与 Richtextfield 关联的字段中显示消息。我尝试了以下操作,但没有收到任何消息,也没有收到错误。

这是我的jsf

<h:messages id="mainmessages" globalOnly="true" styleClass="info" errorClass="error" />
...
<p:fieldset id="emailPanel" toggleable="true" collapsed="true" style="width:800px;">
   <h:outputText value="#{msg.workorderdetail_message}:"/>
   <p:editor id="mailbody" value="#{workOrderDetail.message}" widgetVar="editor" width="500" height="200"/>
   <p:commandButton styleClass="button" process="emailPanel" update="emailPanel mailmessage mainmessages" value="#{msg.workorderdetail_sendemail}" actionListener="#{workOrderDetail.sendMail}" onstart="busyPopup.show()" oncomplete="busyPopup.hide()"/>
    <h:message id="mailmessage" for="mailbody" styleClass="info" errorClass="error"/>
</p:fieldset>

这是我的课

public String sendMail() throws Exception {
    ....
    mailer.send();
FacesContext.getCurrentInstance().addMessage(
                "detail:wodetail:mailbody",
                new FacesMessage(FacesMessage.SEVERITY_INFO,
                        getMsg("common_mail_send_ok") + " (" + toAddresses[0] + ")", getMsg("common_mail_send_ok") + " ("
                                + toAddresses[0] + ")"));

        addFacesMessage(FacesMessage.SEVERITY_INFO, getMsg("common_mail_send_ok") + " (" + toAddresses[0] + ")");
...
}

我不知道我做错了什么。 我认为这在过去是有效的,我什至有时在开发时收到消息说一些错误消息已添加到队列中,但无法显示(因为消息字段未重新渲染) 但现在(prime3.4.2的新版本)我什么也没得到。

最佳答案

当消息客户端 ID detail:wodetail:mailbody 时,就会发生这种情况是错的。对于还没有记住 JSF 的初学者 NamingContainer组件,以便他们只需查看 JSF 源代码就可以计算出它,计算正确客户端 ID 的最简单方法是查看生成的 HTML 输出。在浏览器中打开页面,右键单击并查看源代码,查看 <p:editor> 生成的 HTML 输出并使用 HTML 元素 id作为 JSF 客户端 ID 的顶级 HTML 元素。

此外,另一个可能的原因是消息组件未根据 ajax 请求进行更新。为此,您需要使用 PrimeFaces autoUpdate="true"或者只是在ajax更新中指定消息组件的客户端ID。在您的特定代码示例中,这似乎已经很好了。因此,剩下的唯一可能的原因就是错误的消息客户端 ID。

关于java - 未显示的面孔消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13931581/

相关文章:

java - 使用 Java Streams 返回单词出现的句子计数和列表

java优化挑剔: is it faster to cast something and let it throw exception than calling instanceof to check before cast?

java - Facelet - img 标签

java - 为什么 HSSFWorkbook.write 在 HttpServletResponse 中不起作用

java - 使用 selectonemenu 创建 JSF 数据表并从数据库中填充其数据

java - 无法将我的项目部署到 Jboss 7.2 WildFly(WeldStartService 无法启动服务)

jsf - 如何通过 `confirmDialog` 传递参数?

javascript - 如何处理p :inputText change event

css - JSF PrimeFaces - 按钮高度不变

Java 字符串标记器检查数字