2012-06-26 55 views
1

嗨,我尝试从liferay文档中做portlet。但我的java类别不工作。来自liferay文档的portlet

MyGreetingPortlet

package com.liferay.samples; 
import java.io.IOException; 
import javax.portlet.ActionRequest; 
import javax.portlet.ActionResponse; 
import javax.portlet.PortletException; 
import javax.portlet.PortletPreferences; 
import com.liferay.util.bridges.mvc.MVCPortlet; 
public class MyGreetingPortlet extends MVCPortlet { @Override 
public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) 
     throws IOException, PortletException { 
    PortletPreferences prefs = actionRequest.getPreferences(); 
    String greeting = actionRequest.getParameter("greeting"); 
    if (greeting != null) { 
     prefs.setValue("greeting", greeting); 
     prefs.store(); 
     } 
    super.processAction(actionRequest, actionResponse); 
    } 
} 

view.jsp的

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> 
<%@ page import="javax.portlet.PortletPreferences" %> 
<portlet:defineObjects /> 
<% PortletPreferences prefs = renderRequest.getPreferences(); 
String greeting = (String)prefs.getValue("greeting", "Hello! Welcome to our portal."); %> 
<p><%= greeting %></p> 
<portlet:renderURL var="editGreetingURL"> <portlet:param name="jspPage" value="/edit.jsp" /> 
</portlet:renderURL> 
<p><a href="<%= editGreetingURL %>">Edit greeting</a></p> 

edit.jsp文件

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> 
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %> 
<%@ page import="com.liferay.portal.kernel.util.Validator" %> 
<%@ page import="javax.portlet.PortletPreferences" %> 
<portlet:defineObjects /> 
<% PortletPreferences prefs = renderRequest.getPreferences(); 
String greeting = (String)prefs.getValue("greeting", "Hello! Welcome to our portal."); %> 
<portlet:actionURL var="editGreetingURL"> <portlet:param name="jspPage" value="/edit.jsp" /> 
</portlet:actionURL> 
<form action="<%= editGreetingURL %>" method="post"> 
<label><input type="text"><%= greeting %></label> 
<input type="submit" name="submit" value="Submit"> 
</form> 
<portlet:renderURL var="viewGreetingURL"> 
<portlet:param name="jspPage" value="/view.jsp" /> 
</portlet:renderURL> 
<p><a href="<%= viewGreetingURL %>">&larr; Back</a></p> 

后部署JSP运行正常,但是当我点击提交按钮没有heppens。我在这个例子中只改变了一件事:删除aui标签,但不认为chage的东西,我已经尝试了一些不同的例子,没有人使用java类。哦,我使用MVC portlet。

回答

2

我认为你的portlet-class在portlet.xml中没有指向你的portlet类,并且仍然指MVCPortlet。请更改为指向您的自定义portlet类

---更新---

检查你的代码在我的地方发现,要传递参数的方式是不正确之后。您没有传递参数的名称。您应该传递如下所示的参数。

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

我将portlet-class更改为portlet.xml中的portlet。 –

+0

日志中的任何错误。你怎么确定点击提交不会调用MyGreeting portlet的processAction。您可以在portlet类的processAction方法中放入一些日志语句或System.out.println –

+0

我没有看到任何erorrs。它来自这里的例子http://www.liferay.com/documentation/liferay-portal/6.1/development/-/ai/understanding-the-two-phases-of-portlet-executi-4 –

0

我想这是没有必要调用

super.processAction(actionRequest, actionResponse); 

删除它,然后再试一次,那么它可能会奏效。

2

文件的portlet.xml也需要改变,使其指向新的类

<portlet> 
    <portlet-name>my-greeting</portlet-name> 
    <display-name>My Greeting</display-name> 
    <portlet-class>com.liferay.samples.MyGreetingPortlet</portlet- 
    class> 
    <init-param> 
    <name>view-jsp</name> 
    <value>/view.jsp</value> 
    </init-param> 

在edit.jsp文件

<% 
    PortletPreferences prefs = renderRequest.getPreferences(); 
    String greeting = (String) prefs.getValue("greeting", 
      "Hello! Welcome to our portal."); 
%> 

在此之后添加下面的代码

<liferay-ui:success key="success" message="Greeting saved successfully!" /> 

重新生成战争文件,您将看到输出。不过,如果您遇到问题,我将提供完整代码