Это портлет JSR 168 или 286?
Похоже, вы уверены, что на самом деле вызывается метод processAction()
. Если нет, я бы начал с проверки этого. Ключ должен быть атрибутом действия в вашей форме. Вы используете тег actionURL для отображения атрибута action на JSP?
Сказанное, всякий раз, когда я нахожу звонки в getParameter()
, возвращающий нуль, это означает, что я ошибся с параметром, либо в атрибуте name на элементе ввода в форме, либо в аргументе getParameter()
. Кроме того, параметры чувствительны к регистру.
Любой шанс, что вы могли обновить свой вопрос с помощью кода для формы и метода processAction()
?
Вот пример портлет (JSR 286), который тянет параметры запроса (пакет заявление и импорт опущена):
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"));
}
}
Вот пример 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>
Что я использую JSR 168? – someone