在liferay中编辑消息portlet

时间:2016-07-19 12:51:03

标签: liferay liferay-6 liferay-ide

import java.io.IOException;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.portlet.PortletPreferences;
import javax.portlet.ReadOnlyException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ValidatorException;

import com.liferay.util.bridges.mvc.MVCPortlet;

public class GreetingMessage extends MVCPortlet {

public static final String GREETING = "greeting";
public static final String DEFAULT_GREETING = "Hello! It's my default greeting message";

@Override
public void render(RenderRequest request, RenderResponse response)
        throws IOException, PortletException {

    PortletPreferences preferences = request.getPreferences();
    request.setAttribute(GREETING,
            preferences.getValue(GREETING, DEFAULT_GREETING));
    super.render(request, response);
}

public void updateGreeting(ActionRequest request, ActionResponse response)
        throws ValidatorException, IOException, ReadOnlyException {

    String greeting = request.getParameter("greeting");
    PortletPreferences prefs = request.getPreferences();

    if (greeting != null) {
        prefs.setValue(GREETING, greeting);
        prefs.store();
        request.setAttribute(GREETING, greeting);
    }
}

}

view.jsp的:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> 
<portlet:defineObjects /> 

<p>${greeting}</p>

<portlet:renderURL var="editGreetingURL">
      <portlet:param name="mvcPath" value="/html/greetingmessage/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" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
<%@ page import="javax.portlet.PortletPreferences" %>

<portlet:defineObjects />

<portlet:actionURL name="updateGreeting" var="updateGreetingURL"> 
 </portlet:actionURL>

<aui:form action="<%= updateGreetingURL %>" method="post">
<aui:input label="greeting" name="greeting" type="text" value="${greeting}" />
<aui:button type="submit" />
</aui:form>

<portlet:renderURL var="viewGreetingURL"> 
     <portlet:param name="mvcPath" value="/html/greetingmessage/view.jsp" />
</portlet:renderURL>

<p><a href="${viewGreetingURL}">&larr; AND NOW IT'S BACK</a></p>

它测试了我的“编辑问候”portlet的代码。问题是,我该如何进行本地化???我已经阅读了很多文档,但它一无所获。我在WEB-INF文件夹src / language.properties和src / language_es.properties中创建。接下来我该怎么办?请帮帮我。 @Shivam

1 个答案:

答案 0 :(得分:1)

回答你的问题 1)您可以在render方法中处理属性和portlet首选项,并在render请求中将它们设置为属性,随后可以通过某些脚本语言(如jstl)在jsp中读取它们 2)无需在portlet.xml文件中进行更改。 建议使用init params作为名称建议,以提供初始化portlet视图所需的一些参数。

您需要对渲染方法进行以下更改

public void render(RenderRequest req,RenderResponse res) throws IOException, PortletException
{
    String greeting = req.getParameter("greeting");
    PortletPreferences prefs = req.getPreferences();
    String defaultGreeting="Hello! Welcome to our portalOLOLOLOLOL.";

    if(prefs.getValue("greeting","true")==null)
    {
        prefs.setValue("greeting", defaultGreeting);
    }
    if (greeting != null) 
    {
        prefs.setValue("greeting", greeting);
        prefs.store();
        req.setAttribute("greeting", prefs.getValue("greeting","true"));
    }
    else
    {
        req.setAttribute("greeting", prefs.getValue("greeting","true"));
    }
    super.render(req,res);
}

view.jsp和edit.jsp中不需要进行任何更改(除了删除代码),因此我忘了提及相同的内容。 至于渲染方法,最好的方法是使用动作URL和使用动作方法,但是因为看起来你想要尝试一些方法并对你进行mininmum更改,我只保留它渲染。 至于代码,prefs.getValue("greeting","true")检查portlet首选项中是否存在某个属性。

已更新为流程操作

public class NewPortlet扩展了MVCPortlet {

public static final String GREETING="greeting";

@Override
public void render(RenderRequest req,RenderResponse res) throws IOException, PortletException
{
    PortletPreferences prefs = req.getPreferences();
    String defaultGreeting="Hello! Welcome to our portalOLOLOLOLOL.";

    if(prefs.getValue(GREETING,"true")==null)
    {
        prefs.setValue(GREETING, defaultGreeting);
        prefs.store();
    }
    req.setAttribute(GREETING, prefs.getValue(GREETING,"true"));
    super.render(req,res);
}

public void updateGreeting(ActionRequest req,ActionResponse res) throws ValidatorException, IOException, ReadOnlyException
{
    String greeting = req.getParameter("greeting");
    PortletPreferences prefs = req.getPreferences();

    if (greeting != null) 
    {
        prefs.setValue(GREETING, greeting);
        prefs.store();
        req.setAttribute(GREETING, greeting);
    }

}

}

编辑jsp的更新

  <portlet:actionURL name="updateGreeting" var="updateGreetingURL"> 
 </portlet:actionURL>

<aui:form action="<%= updateGreetingURL %>" method="post">
<aui:input label="greeting" name="greeting" type="text" value="${greeting}" />
<aui:button type="submit" />
</aui:form>
相关问题