我正在为Liferay开发一个portlet(使用Spring MVC框架)。现在我只使用displaytag库在我正在portlet上显示的列表上实现分页。
我现在的问题是我需要检测当前请求是否已由displaytag库的分页控件启动。我发现在进行分页时,会在URL中添加一个参数,该参数看起来像“d-4157739-p = 2”,表示显示的当前页面。所以我可以做到
int isPagingRequest = PortletRequestUtils.getIntParameter(request, "d-1332617-p", -1);
..并且如果isPagingRequest(我可以更改为布尔值)具有值,则该请求已由displaytag分页启动。然而,这是非常糟糕的编码,所以我想避免它。此外,“d”和“p”之间的数字不同,这使得它很难被发现。
是否有人建议我如何检测当前请求是否已被分页挑出?
非常感谢
答案 0 :(得分:1)
Displaytag提供了一个类“ParamEncoder”(我认为它在它的构造函数中)根据表的表名(id或uid元素)为你生成校验和 - 这必须设置为生成有效的校验和(数字)在d和 - (参数)之间。检查出来.TableTagParameters也包括参数所需的常量 - 因此,结合这两个,你可以检索适当的变量密钥以从请求中检索。
答案 1 :(得分:0)
一个选项可能是将您自己的参数添加到 requestURI 属性中的值。例如,您可以添加以下内容:
requestURI="mylistsource.action?ispage=true"
到表标记,其中mylistsource.action是您首先生成列表的服务器操作。
然后,您可以在服务器上查找“ispage”参数。
答案 2 :(得分:0)
String param = new ParamEncoder(tableId).encodeParameterName(TableTagParameters.PARAMETER_PAGE))。 。 以上将解决您的问题,并总结@ MetroidFan2002所说的内容。