2009-02-10 7 views
0

Je migre une ancienne application de portlet de WPS5 vers WPS6. L'application utilise un conteneur IBM hérité. Selon le guide de migration, je ne renouvelle qu'une partie de la bibliothèque du portail et quelques références de tags. L'application utilise toujours le conteneur hérité IBM et le portlet Struts modifié.Migration de portlet Websphere, paramètre manquant dans DispatchAction

Lorsque je crée un lien comme par:

<html:link page="/page1.do?method=display">Go to Page 1</html:link> 

Le lien rendre cette url:

/wps/.../...[hash-like chars]_spf_strutsAction=!2fpage1.do!3fmethod%3ddisplay#[hash-like chars] 

J'utilise DispatchAction, qui rechercher la 'méthode ' paramètre pour l'expédition . Cependant, cliquer sur le lien ci-dessus ne peut pas passer le paramètre 'méthode' à dispatchAction. Une enquête plus approfondie sur le paramètre de demande trouvé cette paire clé-valeur:

name: spf_strutsAction 
value: !2fpage1.do!3fmethod=display 

Il est donc tout à fait évident que request.getParameter('method') renvoie NULL car le paramètre est enterré sous request.getParameter('spf_strutsAction') et donc l'action ne peut pas être expédié.

Bien sûr, je peux forcer l'action de répartition en lisant le paramètre enterré. Mais le problème est qu'il existe de nombreux autres paramètres autres que 'méthode'.

Je pense que le serveur de portail devrait fournir son implémentation de PortletRequest. Est-ce que le PortletRequest.getParameter() est en quelque sorte incorrect? Ou est-ce le problème du portlet Struts? Comment puis-je remettre ces paramètres dans l'objet de requête?

Répondre

1

Quelques idées:

  1. Vous pouvez utiliser les balises de portlet pour générer les liens. Vérifiez les «nouveaux» pavés de pavés fournis avec IBM Portal 6.0
  2. Envisagez d'utiliser une meilleure infrastructure Web de portlet, telle que Spring Portlet MVC, compatible jsr168. IBM ne prendra plus en charge son ancien modèle de portlet à l'avenir.
Questions connexes