2017-01-18 7 views
0

Webアプリケーションに数値パネルを作成する必要がありますが、テキスト領域にボタンの値を挿入できるアクションが見つかりません。誰かが私を助けることができますか?Webアプリケーションの数値パネル

<p:commandButton value="1" id="btn1"></p:commandButton>      
<h:panelGrid id="grid" cellpadding="5" columns="1" > 
<p:inputText id="liczby" style="width:245px" /> 

私はonclick機能はそれを行うことができることを読みましたが、私はそれを使用する方法がわかりません。

+0

ようこそStackOverflow。ここから始めてください:https://stackoverflow.com/tags/jsf/infoチュートリアルのセクション。あなたが投稿する3行のコードのうち2行には、少なくとも4つのことが間違っています。基本的なこと... – Kukeltje

答えて

0

p:commandButtonでサーバー上のJavaオブジェクトの状態を更新し、p:inputTextをその値にバインドすることができます。

ボタンの要素がサーバーの要求なしにDOMのテキスト要素をただちに更新するクライアント側を処理する方がパフォーマンスが向上しますが、JSFを選択すると難しいことです。

対象となるビュー要素の動的に生成されたIDを確実に予測できないため、IDで選択することはできません。クラスを使用してinputTextを選択し、その値を純粋にクライアント側で変更できます。少し厄介ですが、うまくいくはずです。

<p:commandButton onclick="document.getElementsByClassName('myUniqueClass')[0].value = this.value" /> 
<p:inputText styleClass="myUniqueClass" /> 

注:

  • あなたはそれがあなたのプレゼンテーションの中にその機能を宣言するアンチパターンだとして、他の場所でonclickの機能を移動したいと思います。
  • あなたはあなたが期待している要素を正確に得るために、別の要素 'myUniqueClass'の名前を付けないようにしています。これは少しの反パターンでもあります。私はprimefacesがIDを定義する方法を提供していると信じています。つまり、動的に生成されたID(つまり、現在のIDに親要素IDを注入しないように)をエスケープすることができます。
+0

こんにちは、JSFを選択すると「難しい」と私は部分的にしか同意しません。クライアントサイドのHTMLを知っていて、jsfが単にHTMLジェネレータであることを認識していれば、それは難しいことではありません(jsfなしでやることとほとんど同じです)。 PrimeFaces commandButtonを使用すると、 'type =" button "'を追加すると、サーバーに何も送信せずに何かを更新することなく、クライアントサイドのjavascript対応のボタンになることに気づく必要があります。 – Kukeltje

+0

'信頼できない'使用IDについては、IDを使用する場合は、関連するすべての場所に明示的にIDを割り当ててください。ソースを表示し、ネーミングコンテナが何であるかを知ることは、実行する/知ることです。これに助けが必要な場合、Omnifacesは['NoAutoGeneratedIdViewHandler'](http://showcase.omnifaces.org/viewhandlers/NoAutoGeneratedIdViewHandler)を使用して救助を行います。 – Kukeltje

関連する問題