2009-11-05 58 views
1

J'utilise le portail Liferay 5.x. J'ai déployé un portlet simple (utilise la servlet jsp & qui étend GenericPortlet). Ce portlet contiendra le nom d'utilisateur & champ de mot de passe. Je suis capable de voir le formulaire en mode vue. Mais quand je soumets le formulaire, l'action arrive à processAction() de la classe Portlet mais le nom d'utilisateur & paramètres de demande de mot de passe obtiennent comme nul.Portlet JSP ne soumettant pas de valeurs de formulaire

Des idées?

Répondre

2

S'agit-il d'un portlet JSR 168 ou 286? Il semble que vous ayez confiance que la méthode processAction() est réellement appelée. Sinon, je commencerais par vérifier cela. La clé là serait l'attribut d'action sur votre formulaire. Utilisez-vous la balise actionURL pour afficher l'attribut d'action sur la page JSP? Cela dit, chaque fois que je trouve des appels à getParameter() retournant null, cela signifie que j'ai mal orthographié le paramètre, soit dans l'attribut name de l'élément d'entrée dans le formulaire, soit dans l'argument getParameter(). De plus, les paramètres sont sensibles à la casse.

Avez-vous une chance de mettre à jour votre question avec le code du formulaire et la méthode processAction()?

Voici un exemple portlet (JSR 286) qui tire les paramètres de la requête (instruction package et les importations omis):

public class TestPortlet extends GenericPortlet { 

public void init() throws PortletException { 
    super.init(); 
} 


public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { 
    response.setContentType(request.getResponseContentType()); 
    PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/jsp/view.jsp"); 
    rd.include(request,response); 
} 


public void processAction(ActionRequest request, ActionResponse response) throws PortletException { 
    System.err.println(request.getParameter("username")); 
    System.err.println(request.getParameter("password")); 
} 

} 

Voici un exemple JSP:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> 

<portlet:defineObjects /> 

<div> 
    <form action="<portlet:actionURL />"> 
    <table> 
     <tr> 
      <td> 
       User Name: 
      </td> 
      <td> 
       <input type="text" name="username" value=""> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Password: 
      </td> 
      <td> 
       <input type="password" name="password" value=""> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       &nbsp; 
      </td> 
      <td>             
       <input type="submit" name="submit" value="Submit"> 
      </td> 
     </tr> 
    </table>            
</form> 
</div> 
+0

Qu'est-ce que j'utilise JSR 168? – someone

0

Nous devrions ajouter un préfixe de nom.

<input type="text" name="<portlet:namespace/>username"> 
+0

J'ai utilisé le code ci-dessus, mais cela ne fonctionne toujours pas, j'utilise JSR 168 – someone