私たちのチームは、Stripesを長年使用して以来、最初のJSF 2.0アプリケーションを作成しています。私は、f:ajaxタグを使用して入力を検証するための最良の方法についていくつか質問があります。
私が回答した多くの質問には、複数の入力と送信ボタンのあるフォームがありますが、個々の入力フィールドは変更後すぐに更新され、データベースに保持されます(送信ボタンはありません。これは機能していました)。 PrototypeのAjax.Requestを使用してStripesで問題はありませんが、可能であれば避けたい余分な手順でした。
基本的に、Beanによって直接裏付けられた一連の入力を含むページがあります。次に例を示します。
<h:inputText id="name" value="#{personController.name}" >
<f:ajax listener="#{personController.ajax}" />
</h:inputText>
ご存知かもしれませんが、リスナーが呼び出されるまでに、名前の値はBeanですでに変更されています。これは便利ですが、いくつか問題があります。
- リスナーは、Beanのどの値が変更されたかを明らかに知りません
- 値はすでに変更されているため、サーバー側の検証を実行できません
- 名前の古い値が何であるかはわかりませんが、何らかの検証を実行できたとしても、値を何に戻すかはわかりません。
今のところ、変更されたプロパティと新しい値を取得し、それをコントローラーに送信して、検証、データベースの更新、レンダリングするものの返送などを実行するために、ある種のjavascript仲介者を実装する必要があるようです。 。しかし、私が言ったように、これは私たちがストライプで行っていたものであり、私は本当にもっとネイティブなものを使いたいと思っています。
ページにある種の送信ボタンが必要な場合は、valueChangeListener属性のようなものを使用できることはわかりましたが、大量の送信は避けたいと思います。
OpenFacesタグを含めたのは、すでにデータテーブルに使用しているためです。そのため、そこに何か良いものがあれば、それを使用することができます。しかし、私が知る限り、彼らのo:ajaxタグはJSFのf:ajaxよりもそれほど強力ではありません。
ありがとう!