Is this a JSR 168 or 286 portlet?
It sounds like you're confident that the processAction() method is actually being invoked. If not, I'd start by verifying that. The key there would be the action attribute on your form. Are you using the actionURL tag to render the action attribute on the JSP?
That said, whenever I find calls to getParameter() returning null, it means I've misspelled the parameter, either in the name attribute on the input element in the form, or in the argument to getParameter(). Also, the parameters are case sensitive.
Any chance you could update your question with the code for the form and the processAction() method?
Here is an example portlet(JSR 286) that pulls the request parameters (package statement and imports omitted):
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"));
}
}
Here is a sample 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>