2012-06-26 140 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!" /> 

重新生成戰爭文件,您將看到輸出。不過,如果您遇到問題,我將提供完整代碼