2

嗨,我开始学习 liferay 并遇到一个问题。我无法从 jsp 在 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 文件中写一些东西吗?

4

2 回答 2

7

这在很多层面上都是错误的 - 抱歉 - 我不知道从哪里开始:

  • 你应该发帖到<portlet:actionURL />,而不是“ HelloWorld
  • 您应该实现processAction而不是doGet(这听起来很像 servlet)
  • HttpServletRequest为了编写内容,您不得访问您的操作处理程序中的原始内容
  • 在动作处理中你只是处理动作,在渲染阶段你渲染你需要的 HTML
  • 您生成的 HTML 不包含<html>, <head>,而只是门户将嵌入页面的某些部分
  • 我觉得我错过了更多的东西......

我建议从一些教程开始——比如Liferay in Action这本书——来了解基本概念。

于 2012-06-25T08:52:23.497 回答
2

表单标签中的动作属性应该是<portlet:actionURL />

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

同样在 portlet java 文件中实现processAction(ActionRequest request, ActionResponse response)POST 方法。

于 2012-06-25T08:46:06.267 回答