私の現在のプロジェクトでは、承認ワークフローを通じて値を変更できるエンティティがあります。 エンティティの新しいバージョンを保存する場合は、ボタンをクリックするとダイアログがポップアップします。ここであなたの変更を承認するように設定することができます。フォームの値は送信されず、ajaxでリセットされます
私の問題は、このダイアログの値が送信されないことです。
ダイアログはメインテンプレートに含まれていますが、メインフォームの外にあります。
<p:dialog id="idEntityCommentDialog"
header="#{msgs['label.approval.dialogHeader.'.concat(bean.targetStatus)]}"
width="350" widgetVar="entityCommentDlg" modal="true"
maximizable="false" resizable="false" appendTo="@(Body)">
両方のフィールドがBeanをバックアップsessionScoped内部のオブジェクトにその値を設定します:sekectOneMenu:私は標準JSFコントロール、時間があったが、前に
<p:selectOneMenu id="selUsers"
value="#{bean.state.releasedBy}" style="width: 100%">
<f:selectItems value="#{bean.fetchUserList()}" var="user"
itemValue="#{user.id}"
itemLabel="#{user.name}" />
</p:selectOneMenu>
<p:inputTextarea id="changeComment"
value="#{bean.state.newComment.eventDescription}"
style="width: 98%; height: 100px">
<f:converter converterId="xssConverter" />
</p:inputTextarea>
ダイアログが次のように、ボディに追加されますh:inputTextArea。それぞれのプライムフェイスコントロールに切り替えましたが、少なくともselectOneMenuの値が送信されましたが、inputTextareaの値はまだ送信されません。私は使用されたコンバータでブレークポイントを設定し、私はそれを使用する別の場所で動作する私のコンバータで空の文字列を受け取る。
Iは、更新パラメータの様々な組み合わせを試して、私はPを使用する場合、私はまた
<p:ajax event="change" update="@this">
介しAJAXリクエストに値を設定しようとした:AJAXタグを、私が見ることができる、私は、値を変更したときにajaxリクエストの後、値は変更前の元の値に直ちにリセットされます。これは両方のフィールドに適用されます(標準コントロールを使用する場合)私が言ったように、私はprimefacesコントロールで固定しました(私は理由は分かりませんが、うまくいくようですが)inputTextAreaでは機能しません。
マイボタンは、プライムフェースからツールバーファセットとともに挿入されます。
<p:commandButton actionListener="#{bean.saveEntity}"
styleClass="toolbarButton" update="dialogForm2 :blocker:contentWrapper"
onstart="PF('waitDialog').show();"
oncomplete="PF('waitdialog').hide();PF('entityCommentDlg').hide();"
value="#{msgs['label.approval.button.'.concat(bean.targetStatus)]}">
</p:commandButton>
フォームはちょうどidのダイアログ内で定義されていますので、そこに、AJAXコントロール、私の値は直ちにリセットされていること:私は私がpを使用する場合は、そのほとんどが混乱しています
<h:form id="dialogForm2">
ここでは何か非常に間違っているに違いない。
何らかの理由で(phaseListener経由で)表示されない可能性がある検証の失敗も確認しましたが、そうでない場合、facesMessagesは発生しません。
私はプロジェクトから完全なコードを表示することはできませんが、私の顧客はそれを望んでいませんが、他のコードやアーキテクチャについてさらに詳しい情報が必要な場合は、私はそれを提供しようとします。いくつかのIDと名前も変更しましたが、元のコードで正しく参照されていることを確認しました。
このような動作の原因は何でしょうか? 提出されていないフォームの値についてのさまざまな記事があり、私はそれらを見て解決策を試しましたが、ここでは何もうまくいかないようです。私の同僚も、なぜそれがうまくいかないのか分かりません。私は、アプリケーションの別の部分でほぼ同じ構築体(異なるバッキングBeanとオブジェクトを持つ)を使用しています。そこには、標準のjsfコントロールがすべて正常に機能します。
この情報は役に立ちましたか? http://stackoverflow.com/q/2118656「完全なチャンク」を投稿する場合は、最初にそれを行うべきではありません。一般に、問題に寄与しない無関係なノイズ(マークアップ、スタイリング、i18nなど)がたくさん含まれています。サンドボックスプロジェクトで問題を再現し、copy'n'paste'n'runnable MCVEに沸かせてください。また、http://stackoverflow.com/tags/jsf/info – BalusC
も参照してください。残念ながら、私はリストのすべての点をチェックして何も適用されません。しかし、私はポイント9で完全にはわかりません。はい、ダイアログは以前に更新されています。パラメータ(bean.targetStatus)を設定し、ダイアログを更新し、次にonCompleteイベントでダイアログを開きます。 しかし、私のcommandButtonは今のところうまく動作します。 actionListenerのメソッドは正常に動作し、他のフォーム(更新したい元のエンティティ)のすべての値が送信されるので、ここでは問題はないと思いますか? –