2009-11-05 3 views
1

Я использую портал Liferay 5.x. Я развернул простой портлет (использует jsp & сервлет, расширяющий GenericPortlet). Этот портлет будет содержать имя пользователя & поле пароля. Я могу видеть форму в режиме просмотра. Но когда я отправляю форму, действие переходит к processAction() класса Portlet, но параметры запроса пароля пользователя & получают как null.JSP Портлет не отправляет значения формы

Любые идеи?

ответ

2

Это портлет 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> 
       &nbsp; 
      </td> 
      <td>             
       <input type="submit" name="submit" value="Submit"> 
      </td> 
     </tr> 
    </table>            
</form> 
</div> 
+0

Что я использую JSR 168? – someone

0

Мы должны добавить префикс имени.

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

Я использовал код выше, но он все еще не работает, я использую JSR 168 – someone

Смежные вопросы