0

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) 何も得られません。

4

2 に答える 2

3

これは、メッセージのクライアント IDdetail:wodetail:mailbodyが間違っている場合に発生します。JSF コンポーネントを覚えておらず、JSF ソース コードを見ただけで理解できる初心者にとってNamingContainer、正しいクライアント ID を理解する最も簡単な方法は、生成された HTML 出力を調べることです。ブラウザーでページを開き、右クリックして[ソースを表示]で生成された HTML 出力を確認し、最上位の HTML 要素の HTML 要素を JSF クライアント ID として<p:editor>使用します。id

さらに、別の考えられる原因は、メッセージ コンポーネントが ajax 要求で更新されていないことです。そのためには、PrimeFaces を使用するautoUpdate="true"か、ajax 更新でメッセージ コンポーネントのクライアント ID を指定する必要があります。あなたの特定のコード例では、これはすでに問題ないようです。したがって、考えられる唯一の原因は、単純に間違ったメッセージ クライアント ID です。

于 2012-12-18T11:32:27.733 に答える
0

次のコードを追加します。それはあなたのために役立ちます

 <p:messages showDetail="true" />

ありがとう

于 2012-12-20T12:42:00.127 に答える