Mojarra 2.1.3、Netbeans 7.0.1、primefaces 3.2 を使用しています。
現在、STATE_SAVING_METHOD クライアントとサーバーのどちらを使用するかで悩んでいます。現在、保存方法をクライアントに設定しています。これには、多くのオブジェクトの直列化可能性を調整することが含まれます。そして、ステートレス ファサード セッション Bean に transient キーワードを設定します。
@ManagedBean
@ViewScoped
public class SaProductController implements Serializable {
@EJB
transient SaProductFacade saProductFacade;
@EJB
transient SaKeywordFacade saKeywordFacade;
....
私のxhtmlページには、ページネーション付きのprimefaces dataTableがあります。ページを初めてロードすると、データテーブルの最初のページが表示されます。ただし、次のページをクリックすると、この行は NullPointerException エラーをスローします。
data = saProductFacade.selectAll(first, pageSize);
何故ですか?saProductFacade @EJB プロパティが一時的であると宣言され、同じページへのポストバックで破棄されたためでしょうか。いずれにせよ、ViewScoped マネージド Bean はまだ生きています。この問題を解決する方法を教えてください。それとも私はそれを間違っていますか?
参考までに、STATE_SAVING_METHOD をサーバーに設定すると、これは完全に機能します。しかし、ブラウザーの [戻る] ボタンの危険性から、クライアントの状態を保存するオプションを使用することにしました。また、サーバーのメモリ制限により、クライアントの状態の保存が保証されます。