私は、次のような URL で以下のように設定されたページを持っていますmy.page.com/table.xhtml?id=123
。
+----------------------------------------------+
|Meta information |
|----------------------------------------------|
| Search Fields Submit btn |
|----------------------------------------------|
| |
| |
| Big p:dataTable |
| with rowExpansion |
| |
|----------------------------------------------|
| Pager |
+----------------------------------------------+
id=123
結果テーブルの内容を制御するリクエスト パラメータです。すべてのアクションは、 を使用してデータ テーブルをリロードするだけAJAX
です。
id
これを通してロードされます:
<f:metadata>
<o:viewParam name="id" value="#{dataTable.id}" />
<f:viewAction action="#{dataTable.initialize}" />
</f:metadata>
セッションが期限切れになるまで、これはすべて正常に機能します。この時点では、何も機能しません。問題のデータにアクセスできなくなり、データを取得id
するクラスの呼び出しにDAO
これがないため、データを取得できません。
「アクセスできなくなったid
」とは、次のことを意味します。
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id")
戻りますnull
。また、int id
バッキング Bean から ( を介してロードされる)o:viewParam
もf:metadata
同じ運命をたどります。
をキャッチする方法があることは知っていますがViewExpiredException
、これは私が望むものではありません。id
ユーザーが知らないうちに、リクエストパラメーター (この場合は ) を使用してすべての値を単純にリロードするページが必要です。
@ViewScoped
この複雑なテーブルとすべてのパラメーターなどを制御するには、管理 Bean が必要だと思います。
私はこれに関して途方に暮れています。私は自分自身ViewHandler
を構築して、ページを単純に再構築 (更新を模倣) しようとし、PrimeFaces
ajaxExceptionHandler
他のソリューションの中でも を使用しようとしました。しかし、これらはすべてエラーになり、表示されます。my.page.com/table.xhtml
?id=123
バッキング Bean からリクエスト パラメータにアクセスしたいだけです。
どんな助けでも大歓迎です。
私は実行しています:
- トムキャット7
- モハラ 2.2.6
- オムニフェイス 1.8.1
- プライムフェイス 5.0