2009-11-05 5 views
1

Liferay 포털 5.x를 사용 중입니다. 간단한 포틀릿 (GenericPortlet을 확장하는 jsp & 서블릿 사용)을 배치했습니다. 이 포틀릿에는 사용자 이름 & 암호 필드가 포함됩니다. 보기 모드에서 양식을 볼 수 있습니다. 그러나 양식을 제출할 때 작업이 Portlet 클래스의 processAction()으로 이동하지만 사용자 이름 & 암호 요청 매개 변수가 null로 표시됩니다.JSP 포틀릿이 양식 값을 제출하지 않음

아이디어가 있으십니까?

답변

2

JSR 168 또는 286 포틀릿입니까?

processAction() 메서드가 실제로 호출되고 있다고 확신하는 것 같습니다. 그렇지 않다면, 나는 그것을 확인함으로써 시작할 것입니다. 폼에 action 속성이있을 것입니다. actionURL 태그를 사용하여 JSP에서 액션 속성을 렌더링하고 있습니까?

즉, getParameter()이 null을 반환 할 때마다 양식의 입력 요소에있는 name 특성이나 getParameter()에 대한 인수 중 하나를 잘못 입력했음을 의미합니다. 또한 매개 변수는 대/소문자를 구분합니다.

언제든지 양식의 코드와 processAction() 방법으로 질문을 업데이트 할 수 있습니까? 샘플 JSP 여기

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")); 
} 

} 

은 다음과 같습니다 : 여기

는 요청 매개 변수를 가져옵니다 (JSR 286) (package 문 및 수입 생략) 예를 들어 포틀릿입니다

<%@ 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

관련 문제