2016-07-26 6 views
0

私はこのPを持ってフォームを提出しないでバッキングBeanを更新する良い方法はありますか? inputTextarea:

<p:inputTextarea id="inputTextArea" value="#{myBean.data}}"> 
    <f:ajax event="blur" /> 
</p:inputTextarea> 
:だから私はこれをしなかった

ボタンをクリックすると

私は別の場所に提出フォームのボタンを移動しているので
<p:inputTextarea id="inputTextArea" value="#{myBean.data}" /> 

、myBean.dataはnullにとどまります

うんざり!

しかし、私はこれを行うよりエレガントな方法があると感じています。 別のフォームのボタンをクリックすると、データが利用できるように、beanに書き込まれたinputTextareaの値が必要です。

+1

これはかなり優雅です。フィールドを離れる瞬間に値をサーバーに送信することを明示します。だからもっとエレガントな方法はほとんど見つけられません。しかし、あなたがまだ「提出する」だけでそれを望むなら、うまくいかないコードを投稿してください。誰かがそれを訂正するのを助けるかもしれません。 – Kukeltje

+0

ありがとうございます。私は多分これを行うための専用の関数やキーワードがあると思った。 – Tim

+0

これには専用のキーワード/機能があります。 'f:ajax'(または' p:ajax');-) – Kukeltje

答えて

0

これはすべて間違っています。 JSFのライフサイクルを理解する必要があります。短い答えをするために、あなたのボタンで "@"(ボタン自体)と "inputTextArea"を処理する必要があります。そして、すべて正常に動作します。さらにパフォーマンスを向上させるために、同じボタン(partialSubmit = true)を使用して、上記のフィールド(入力とボタン)のみがフォームとともに送信されるようにすることができます。だから、今だけ...あなたが取得する必要があり

<p:inputTextarea id="inputTextArea" value="#{myBean.data}" /> 

(最終的には無二重括弧)、その後

<p:commandButton ..... process = "@this inputTextArea" .... partialSubmit = "true" /> 

が必要しかし、あなたはこれをヒットした場合、(そう簡単な)問題を私を信頼します深刻なJSFの本を読んで、Primefacesのマニュアルを読んでみましょう。

+0

最初に上記の私のコメントを参照してください(あなたは通知の権利を持っていますか?)、第二に、OPは最初に[mcve]を作成する必要がありますIF OPは私たちがボタンを動かすときに起きた問題を見て欲しいです。 – Kukeltje

+0

それに加えて、フォームに数十の入力があり、 'process =" @ this inputTextArea1 inputTextArea2を使用すると...inputTextArea99'を使用すると、実際には違いはありません(すべてのidを含めるとデフォルト( '@ form')と同じです)。 (既に '' p:ajax''の 'process'のデフォルトは' @ thisです。)は、異なるjsfフェーズのいくつかの部分でパフォーマンスが向上しています(リストアビュー以外にも、MyFacesのビューキャッシュはここで遊ぶ)ので、情報がなければ正義も間違いもない。 – Kukeltje

関連する問題