0

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 をサーバーに設定すると、これは完全に機能します。しかし、ブラウザーの [戻る] ボタンの危険性から、クライアントの状態を保存するオプションを使用することにしました。また、サーバーのメモリ制限により、クライアントの状態の保存が保証されます。

4

1 に答える 1

0

参考までに、初心者向けに、現在サーバー状態保存方法を使用しています。また、セッション変数を使用して、ユーザーが戻るボタンを押した場合に自分がどこにいるかを覚えています。このようにして、ViewScoped バッキング Bean が再作成され、ユーザーが最後に表示したページに自動的にページ付けされます。GET HTTP リクエストを使用して別のページに移動する前に、最後のデータテーブル ページがあった場所にユーザーをリダイレクトできるようにします。

于 2012-07-29T05:25:28.133 に答える