2009-04-21 26 views
0

我目前正在爲Liferay開發一個portlet(使用Spring MVC框架)。現在我只是使用displaytag庫在我在portlet上顯示的列表上實現分頁。Displaytag庫 - 檢測尋呼請求

我現在的問題是,我需要檢測當前請求是否由displaytag庫的分頁控制啓動。我發現在進行分頁時,會在類似「d-4157739-p = 2」的URL中添加一個參數,該參數表示顯示的當前頁面。所以,我可以做

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

..和如果isPagingRequest(我可以改變一個布爾值)的值,則請求已被由標籤分頁啓動。然而,這是非常糟糕的編碼,所以我想避免它。此外,「d」和「p」之間的數字會變化,這使得它很難檢測到它。

有人有一個建議如何我可以檢測當前的請求是否被尋呼挑釁?

非常感謝

回答

1

Displaytag提供了一個類「ParamEncoder」(我認爲它在它的構造函數中)根據您的表的表名(id或uid元素 - 它必須設置爲產生有效的校驗和d和 - (參數)之間的數字)檢查出來TableTagParameters也包含參數所需的常量 - 所以通過組合這兩個參數,您可以檢索相應的變量鍵以從請求中檢索到

+0

非常感謝!那正是我在尋找的。 – Juri 2009-04-22 06:30:09

0

一種選擇是你自己的參數添加到在requestURI屬性的值。因此,例如,你可以補充一點:

requestURI="mylistsource.action?ispage=true" 

表標籤,其中mylistsource.action是產生在首位名單服務器的動作。

在服務器上,您可以查找「ispage」參數。

+0

解決方案的問題在於,參數也放置在排序鏈接上,所以如果用戶選擇對錶進行排序,則會得到ispage = true。 – MetroidFan2002 2009-04-24 00:46:39

0

String param = new ParamEncoder(tableId).encodeParameterName(TableTagParameters.PARAMETER_PAGE))。 。 以上將解決您的問題,並總結@ MetroidFan2002的說法。