来自liferay文档的Portlet

时间:2012-06-26 05:14:27

标签: java jsp liferay portlet

您好我尝试从liferay文档中执行portlet。但我的java类不起作用。

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工作正常,但是当我点击“提交”按钮时,没有任何消息。我在这个例子中只改变了一件事:删除aui标签,但不要认为chage某事,我已经尝试了一些不同的例子,没有人使用java类。哦,我使用MVC portlet。

3 个答案:

答案 0 :(得分:2)

我认为你的portlet.xml中的portlet类没有指向你的自定义portlet类,仍然是指MVCPortlet。请更改它以指向您的自定义portlet类

<强> --- ---更新

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

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

答案 1 :(得分: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!" />

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

答案 2 :(得分:0)

我想没必要打电话

super.processAction(actionRequest, actionResponse); 

将其删除并重试,然后它可能会有效。