2009-11-05 60 views
1

我正在使用Liferay portal 5.x. 我部署了一個簡單的portlet(使用jsp & servlet擴展GenericPortlet)。 此portlet將包含用戶名&密碼字段。我能夠在視圖模式下查看錶單。 但是當我提交表單時,動作來到Portlet類的processAction(),但用戶名爲&的密碼請求參數變爲null。未提交表單值的JSP Portlet

任何想法?

回答

2

這是JSR 168或286 portlet嗎?

聽起來好像您確信實際上正在調用processAction()方法。如果沒有,我會開始驗證。關鍵在於你的表單上的action屬性。您是否使用actionURL標記來呈現JSP上的action屬性?這就是說,無論我何時找到getParameter()返回null的調用,這意味着我拼錯了參數,無論是在輸入元素的name屬性中,還是在參數getParameter()中。另外,這些參數區分大小寫。

任何機會,您可以更新您的問題與表格和processAction()方法的代碼?

下面是一個例子的portlet(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 2015-04-20 16:39:01

0

我們應該添加爲名稱的前綴。

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

我使用了上面的代碼,但它仍然不起作用,我正在使用JSR 168 – someone 2015-04-20 16:38:42