【IT】PrimeFacesのdataTableでページのキャッシュが残る場合の対処法【猿でも分かる】

primefaces ページ
広告

 

どーも、いわしです。

※本記事は大分ニッチな世界の話になります。ご了承ください。

 

primafacesってすごい簡単に画面に表示するテーブルとかが作成できて、開発の工数削減に寄与していることは間違い有りません。

 

ただ、たーだ情報が少なくてはまってしまうと大分ハマります(英語でもそんなにないんよね)。特に今までふるーいふるいー技術のみ扱ってきた僕みたいなのが触れると一日ハマるとかもザラにあります。

 

 

そこで先日PrimeFacesのdataTableを使用していてページのキャッシュが残ってしまう現象が発生し、一日はまってしまったのでそれの対処法を記述しておきます。

 

ちなみにページのキャッシュが残ってしまう現象っていうのは、下記のようなdataTable(単純に検索したものを表示するdataTableと仮定してください)でページを2ページ目に遷移したとします。

 

primefaces showcase2

 

 

その後に検索条件を変更し、再度検索した際も上記同様2ページ目のまま変わらない、戻らない、そのままという現象になります。本来は1ページ目が表示されるのが正しい。

 

 

早速修正方法です。

※ちなみに2015年12月現在 サーバ側でキャッシュをリセットしてクライアント側に戻す方法は確認できておりますが、クライアント側のみの変更でキャッシュをリセットする方法は私は確認できておりません。ご存じの方はご教示ください。

広告

ページのキャッシュを1ページ目に戻す方法

 

 

検索ボタン押下時とかのサーバ側イベントに下記を記述するだけ!!

ね、簡単でしょう?

 

下記のメソッドはdataTableのオブジェクトをサーバ側で取得し、resetメソッドでキャッシュをクリアしております。

DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent(“dialogSelectionForm:carSelectDialogTable”);
dataTable.reset();

 

と、これだけだと適当すぎるし英語で検索すればすぐ見つかります。

僕がハマったのは下記の部分(primefaces関係ないかも、どちらかといえばJSF?)

(“dialogSelectionForm:carSelectDialogTable”);

 

ここに記述するFormIdとTableIdがわかりませんでした。

こいつらを確認する方法は、、、そう

 

修正したい画面で[右クリック]-[ソースの表示]でソースを確認します。

 

その後dataTableにつけたIDで検索すれば、formIdもくっついているはずです。

そこで、formIdとdataTableを確認して、上のメソッドに入れてあげればよいです。

 

 

僕の場合はprimefacesとか関係ないフレームワーク側の処理のせいでformIDが変わってしまっていたみたいです。なんでだろ?

 

こんな感じで同様の問題にハマってしまった人は修正してみてね!これからも良いprimefacesライフを。

 

終わり!

 

 

広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です