2009-04-21 6 views
0

Ich entwickle gerade ein Portlet für Liferay (mit dem Spring MVC-Framework). Jetzt habe ich nur die Tag-Tag-Bibliothek verwendet, um den Seitenwechsel in einer Liste, die ich im Portlet anzeige, zu implementieren.Displaytag-Bibliothek - Erkennen einer Paging-Anfrage

Mein Problem ist jetzt, dass ich erkennen müsste, ob die aktuelle Anfrage durch das Paging-Steuerelement der DisplayTag-Bibliothek gestartet wurde. Was ich gefunden habe, ist, dass beim Paging ein Parameter in der URL hinzugefügt wird, der aussieht wie "d-4157739-p = 2", was die aktuelle Seite anzeigt, die angezeigt wird. So konnte ich tun

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

..und wenn die isPagingRequest (die ich in einen Booleschen ändern könnte) einen Wert hat, dann hat sich die Anforderung durch die displaytag Paging eingeleitet. Dies ist jedoch eine sehr schlechte Codierung, also möchte ich es vermeiden. Außerdem variiert die Zahl zwischen "d" und "p", was es sehr schwierig macht, sie zu erkennen.

Hat jemand einen Vorschlag, wie ich feststellen kann, ob die aktuelle Anfrage durch einen Paging provoziert wurde ??

Vielen Dank

Antwort

1

Displaytag stellt eine Klasse "ParamEncoder" zur Verfügung, die (ich denke, es in seinem Konstruktor) die Prüfsummen für Sie basierend auf dem Tabellennamen Ihrer Tabelle erzeugt (das ID oder UID - Element muss gesetzt werden, um gültige Prüfsummen zu erzeugen Zahlen zwischen d und - (Parameter)) Überprüfen Sie es. TableTagParameters enthält die Konstanten, die für die Parameter auch benötigt werden - also können Sie mit einer Kombination aus diesen beiden den entsprechenden variablen Schlüssel abrufen, der aus der Anfrage abgerufen werden soll:

+0

Vielen Dank !! Genau das habe ich gesucht. – Juri

0

Eine Option könnte Ihre eigenen Parameter auf den Wert in der RequestURI Attribut hinzufügen. So zum Beispiel, könnten Sie hinzufügen:

requestURI="mylistsource.action?ispage=true" 

auf den Tisch Tag, wo mylistsource.action ist der Server Aktion, die die Liste in erster Linie erzeugt.

Auf dem Server können Sie dann nach dem Parameter "ispage" suchen.

+0

Das Problem mit Ihrer Lösung besteht darin, dass die Parameter auch zum Sortieren von Verknüpfungen verwendet werden. Sie erhalten also die Ispage = true, wenn der Benutzer die Tabelle sortiert hat. – MetroidFan2002

0

Zeichenfolge param = new ParamEncoder (tableId) .encodeParameterName (TableTagParameters.PARAMETER_PAGE)). . Oben wird Ihr Problem lösen und fasst auch was @ MetroidFan2002 sagte.