2009-04-21 12 views
0

現在、Liferay用のポートレットを開発中です(Spring MVCフレームワークを使用しています)。今では、ポートレットで表示しているリストでページングを実装するためにdisplaytagライブラリを使用しました。Displaytagライブラリ - ページングリクエストの検出

私の問題は、現在のリクエストがdisplaytagライブラリのページングコントロールによって開始されたかどうかを検出する必要があることです。私が見つけたのは、ページングを行うときに、現在のページを示す "d-4157739-p = 2"のようなURLにパラメータが追加されていることです。 (私は、ブール値に変更することができます)isPagingRequestは、その要求がdisplaytagページングによって開始された値を持っているのであれば、私は

int isPagingRequest = PortletRequestUtils.getIntParameter(request, "d-1332617-p", -1); 

..andを行うことができます。しかし、これは非常に悪いコーディングなので、私はそれを避けたいです。さらに、 "d"と "p"の間の数が変化するので、それを実際に検出することが難しくなります。

誰かが、現在のリクエストがページングによって誘発されたかどうかをどのように検出できるか提案していますか?

おかげでたくさん

答えて

1

Displaytagは、テーブルのテーブル名(idまたはuid要素)に基づいてチェックサムを生成するクラス(ParamEncoder)を提供しています。 dと - (パラメータ)の間の数字)チェックしてくださいTableTagParametersにはパラメータに必要な定数も含まれていますので、これら2つの組み合わせを使用して、適切な変数キーを取得してリクエストから取得できます。

+0

ありがとう!それはまさに私が探していたものでした。 – Juri

0

1つのオプションは、requestURI属性の値に独自のパラメータを追加することができます。 mylistsource.actionが最初の場所でリストを生成し、サーバーのアクションでテーブルタグに

requestURI="mylistsource.action?ispage=true" 

:だから例えば、あなたはこれを追加することができます。

サーバー上で、「ispage」パラメータを検索できます。

+0

解決策の問題は、パラメータも並べ替えリンクに配置されるため、ユーザーがテーブルを並べ替えるように選択した場合、ispage = trueになります。 – MetroidFan2002

0

String param =新しいParamEncoder(tableId).encodeParameterName(TableTagParameters.PARAMETER_PAGE))。 。 上記はあなたの問題を解決し、@ MetroidFan2002が何を言っていたかをまとめます。

関連する問題