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?