2012-06-25 50 views
2

你好我開始lern liferay並有一個問題。我不能從jsp發送portlet中的POST。如何在liferay portlet中發送POST?

在JSP中我有:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 

<portlet:defineObjects /> 

<div> 
    <form action="HelloWorld" method="post" enctype="multipart/form-data"> 
    <div id="up"> 
    <input id="fileUpload1" type="button" name="filename" value="Привет"> 
    </div> 
    </form> 
</div> 

portlet中:

public class HelloWorld extends GenericPortlet { 
protected void doGet(ActionRequest request, 
    ActionResponse response) throws ServletException, IOException 
    { 
// reading the user input 
//String color= request.getParameter("color"); 
HttpServletResponse servletResponse = PortalUtil.getHttpServletResponse(response); 
PrintWriter out = servletResponse.getWriter(); 
    out.println("<HTML>"); 
    out.println("<HEAD <TITLE> Upload4 </TITLE> </HEAD>"); 
    out.println("<BODY>"); 
    out.println("<FORM action = \"HelloWorld\" method = \"post\" enctype = \"multipart/form-data\">"); 
    out.println("<div id='up'>"); 
    out.println("Hello World!!"); 
    out.println("<input id='fileUpload1' type='button' name='filename' value='Привет'>"); 
    out.println("</div>"); 
    out.println("</FORM>"); 
    out.println("</BODY>"); 
    out.println("</HTML>"); 
} 
    } 

在那裏我可以錯了嗎?我會在portlet的XML文件中寫一些東西?在表單標籤

回答

7

這是錯誤的這麼多層次 - 對不起 - 我不知道從哪裏開始:

  • 你應該張貼到<portlet:actionURL />,不要「HelloWorld
  • 您應該實現processAction代替doGet(這聽起來有點像一個servlet)
  • 你不能獲得訪問原始HttpServletRequest在動作處理程序,以寫的內容
  • 在動作處理您剛纔^ h andle的動作,在呈現階段你呈現你需要
  • 的HTML你生成的HTML不包含<html><head>,但只是一些部分,該門戶將嵌入頁面
  • 上,我覺得我錯過了更多的東西...

我建議先從一些教程開始 - 比如Liferay in Action書 - 以獲得基本概念。

+0

書Tnx。我做所有你寫的東西,但servlet不會生成新的頁面。 –

+1

正如Olaf所說,要學習的東西有很多,請仔細閱讀一些文檔。 Liferay的官方文檔可以讓你從一開始就掌握一切。 http://www.liferay.com/documentation/liferay-portal/6.1/development/-/ai/portlet-developme-3 –

2

動作屬性應該是<portlet:actionURL />

<form action="<portlet:actionURL />" method="post" enctype="multipart/form-data"> 

另外在portlet中的java文件落實POST processAction(ActionRequest request, ActionResponse response)方法。

+0

像這樣? –

+0

@KliverMax我已經展示了它的簡單寫法。 –

+0

我改變公共無效processAction(ActionRequest請求, ActionResponse響應)拋出IOException {但沒有什麼可以改變 –