2010-09-17 3 views
1

J'ai une liste avec x nombre d'éléments, et une page avec x nombre de portlets. Chaque portlet sur la page a la même classe de sauvegarde et l'accès à ma liste, et les modifications affichées dépendent de l'élément de liste sélectionné. Le mode d'édition permet à l'utilisateur de sélectionner l'élément à afficher et de stocker l'élément sélectionné dans l'objet de préférences situé derrière le portlet. En l'état, chaque portlet affiche initialement le premier élément de la liste jusqu'à ce qu'un utilisateur édite le portlet et sélectionne un élément différent. Cependant, j'aimerais que chaque portlet affiche initialement un élément différent.Comment faire pour que les portlets avec la même classe de support affichent des informations différentes?

Il semble que je devrais calculer quel élément afficher en fonction de la position. Si j'ai 2 colonnes et 6 lignes alors l'article de la colonne 2 ligne 4 montrera l'article 8 ((ligne - 1) * #columns + colonne). Cela fonctionne bien, sauf que lorsque l'utilisateur commence à déplacer les portlets, les valeurs du portlet changent avec la position. Je voudrais "verrouiller" l'élément sélectionné initialement, de sorte qu'il ne change pas avec le mouvement. Malheureusement, j'ai vraiment besoin de stocker l'élément initial sélectionné (ou la position initiale) dans l'objet préférences, mais je ne peux pas le faire dans la fonction doView, et processAction n'est pas appelé jusqu'à ce qu'un portlet change d'état.

Je pensais simplement stocker le choix initial dans la session et le lire lorsque la fonction processAction est appelée (en lui donnant une priorité inférieure au choix soumis). Le problème avec ceci est que, si la session est invalide avant que l'utilisateur change de mode de portlet, l'élément sélectionné ne sera pas stocké. Mon autre pensée était d'inclure la position du portlet en tant que variable dans l'élément portlet-preferences du fichier portlet.xml, mais je ne sais même pas si c'est possible.

Je suppose qu'une autre option consisterait à utiliser ma propre configuration de préférences, mais je vois cela en dernier recours.

Est-ce que quelqu'un a des idées sur la façon dont je pourrais accomplir ce dont j'ai besoin?

Toute aide ou suggestion est très appréciée.

Merci,

B.J.

post-scriptum J'utilise la spécification Portlet 2.0 (bien que je n'utilise pas d'événements) et Jetspeed 2.1 comme conteneur de portlet.

+0

Avez-vous des raisons d'utiliser le portlet? une telle édition simultanée mais indépendante des articles? – snowflake

Répondre

0

Je pense que vous ne devriez pas profiter des portlets disponibles pour votre application. Vous n'avez aucun moyen, sauf en utilisant un portail propriétaire, de vous assurer que l'ordre du portlet n'est pas déplacé. Je considérerais tout afficher à l'intérieur d'un seul portlet, puis compterais sur javascript pour les colonnes et les rangées de blocs.

Questions connexes