【问题标题】:Portlet from liferay documentationLiferay 文档中的 Portlet
【发布时间】:2012-06-26 05:14:26
【问题描述】:

您好,我尝试从 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 标签,但不要认为改变一些东西,因为我已经尝试了一些不同的例子,没有人使用 java 类。哦,我使用 MVC portlet。

【问题讨论】:

    标签: java jsp liferay portlet


    【解决方案1】:

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

    ---更新---

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

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

    【讨论】:

    • 我在 portlet.xml 中将 portlet-class 更改为我的 portlet。
    • 日志中的任何错误。您如何确定单击提交不会调用 MyGreeting portlet 的 processAction。你能把一些日志语句或 System.out.println 放在你的 portlet 类的 processAction 方法中
    • 我没有看到任何错误。它的例子来自这里liferay.com/documentation/liferay-portal/6.1/development/-/ai/…
    • 不确定,除非我看到完整的 portlet,否则为什么会出现错误。您可以将您的 portlet 源(可能是 zip 文件)上传到 Dropbox 或其他东西并分享链接,以便我了解它为什么不起作用
    • 我检查了你的代码。提交表单时, processAction 被正确调用。唯一的问题是当您提交表单时,您没有传递问候参数名称。您正在传递 但它应该是
    【解决方案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文件你会看到输出。不过,如果你遇到问题,我会提供完整的代码

    【讨论】:

      【解决方案3】:

      我想没必要打电话

      super.processAction(actionRequest, actionResponse); 
      

      删除它并重试,然后它可能会起作用。

      【讨论】:

        猜你喜欢
        • 2021-02-06
        • 1970-01-01
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多