Question

Je développe actuellement un portlet pour Liferay (en utilisant le framework Spring MVC). Maintenant, je viens d'utiliser la bibliothèque displaytag pour la mise en œuvre radiomessagerie sur une liste J'affichage sur le portlet.

Mon problème est maintenant que je aurais besoin de détecter si la demande actuelle a démarré par la commande d'appel de la bibliothèque displaytag. Ce que je trouve est que lorsque vous effectuez la pagination, un paramètre est ajouté dans l'URL qui ressemble à « d-4157739-p = 2 » qui indique la page en cours qui est affiché. Alors que je pouvais faire

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

.. et si le isPagingRequest (que je pouvais changer une valeur booléenne) a une valeur alors que la demande a été initiée par la recherche de personnes displaytag. Ceci est cependant très mauvais codage, donc je voudrais éviter. De plus, le nombre entre le « d » et « p » varie ce qui le rend vraiment difficile de le détecter.

Est-ce que quelqu'un a une suggestion comment je peux détecter si la demande actuelle a été provocated par un échange ??

Merci beaucoup

Était-ce utile?

La solution

displaytag fournit une classe « ParamEncoder » qui (je pense que dans son constructeur) produit les checksums pour vous en fonction de nom de la table de votre table (l'identifiant ou élément uid - cela doit être réglé pour produire checksums valides (les numéros entre d et -.. (paramètre)) Mes TableTagParameters comprend les constantes nécessaires pour les paramètres aussi bien -. donc avec une combinaison de ces deux, vous pouvez récupérer la clé variable appropriée pour récupérer de la requête

Autres conseils

Une option pourrait être d'ajouter votre propre paramètre à la valeur dans le requestURI attribut. Ainsi, par exemple, vous pouvez ajouter ceci:

requestURI="mylistsource.action?ispage=true"

à la balise de table, où mylistsource.action est votre action serveur qui génère la liste en premier lieu.

Sur le serveur, vous pouvez alors rechercher le paramètre « ispage ».

Chaîne param = new ParamEncoder (TableID) .encodeParameterName (TableTagParameters.PARAMETER_PAGE)). . Au-dessus résoudra votre problème et résume aussi ce que @ MetroidFan2002 a dit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top