面对未显示的消息

时间:2012-12-18 11:05:30

标签: java jsf primefaces

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

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] + ")");
...
}

我不知道我做错了什么。 我认为这曾经在过去工作,我甚至有时在开发时得到消息说一些错误消息被添加到了que,但是无法显示(因为消息字段没有被重新呈现) 但是现在(prime3.4.2的更新版本)我什么都没得到。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

添加以下代码。它会对你有所帮助

 <p:messages showDetail="true" />

由于