[英]Portlet from liferay documentation
嗨,我嘗試從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 %>">← Back</a></p>
部署后jsp工作正常,但是當我點擊提交按鈕時沒有任何消息。 我在這個例子中只改變了一件事:刪除aui標簽,但不要認為chage某事,我已經嘗試了一些不同的例子,沒有人使用java類。 哦,我使用MVC portlet。
我認為你的portlet.xml中的portlet類沒有指向你的自定義portlet類,仍然是指MVCPortlet。 請更改它以指向您的自定義portlet類
---更新---
在我的本地檢查你的代碼后發現你傳遞參數的方式不正確。 您沒有傳遞參數的名稱。 您應該傳遞如下所示的參數。
<input type="text" name="<portlet:namespace/>greeting"><%= greeting %></input>
還需要更改文件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文件,您將看到輸出。 不過,如果你遇到問題,我會提供完整的代碼
我想沒必要打電話
super.processAction(actionRequest, actionResponse);
刪除它並再試一次,然后它可能會工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.