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>
</td>
<td>
<input type="submit" name="submit" value="Submit">
</td>
</tr>
</table>
</form>
</div>
Qu'est-ce que j'utilise JSR 168? – someone