2

こんにちはimはlernliferayを開始し、1つの問題があります。jspからポートレットに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>

ポートレット内:

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

どこを間違えることができますか?ポートレットのXMLファイルに何かを書くつもりですか?

4

2 に答える 2

7

これは非常に多くのレベルで間違っています-申し訳ありませんが-どこから始めればよいのかわかりません:

  • 「 」<portlet:actionURL />ではなく、に投稿する必要がありますHelloWorld
  • processAction代わりに実装する必要がdoGetあります(サーブレットのように聞こえます)
  • HttpServletRequestコンテンツを書き込むために、アクションハンドラーでオリジナルにアクセスしてはなりません。
  • アクション処理では、アクションを処理するだけです。レンダリングフェーズでは、必要なHTMLをレンダリングします。
  • 生成するHTMLには、、が含まれていませんが、ポータルがページに埋め込む部分のみが含ま<html><head>ています
  • そして、私はさらにいくつかのことを逃したような気がします...

基本的な概念を理解するために、 LiferayinActionの本のようなチュートリアルから始めることをお勧めします。

于 2012-06-25T08:52:23.497 に答える
2

フォームタグのアクション属性は<portlet:actionURL />

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

また、ポートレットJavaファイルprocessAction(ActionRequest request, ActionResponse response)でPOSTのメソッドを実装します。

于 2012-06-25T08:46:06.267 に答える