2016-07-11 49 views
1

我是Liferay开发的新手,我有一个非常简单的问题。从Liferay Portal调用jsp页面

我有一个显示文本消息的portlet示例,我需要在Liferay Portal中显示。我怎样才能做到这一点 ?在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> 

回答

1

编辑

我怎么能写在view.jsp的文件,而Java代码相同的portlet?

必须覆盖MVCPortlets doView方法来初始化属性,让我们考虑的属性greeting。例如:

public class Greeting extends MVCPortlet { 

    @Override 
    public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException { 

     renderRequest.setAttribute("greeting", "Hello! Welcome to our portal."); 

     super.doView(renderRequest, renderResponse); 
    } 
} 

而在你的JSP文件,检索使用EL ${greeting}greeting属性。

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

<portlet:defineObjects /> 

<p>${greeting}</p> 

输出继电器:

Hello! Welcome to our portal. 
+0

谢谢您的回答,但我的意思是别的东西。我会尽力解释更好。 我有java文件,我有view.jsp文件与java代码在里面。我如何在view.jsp文件中编写没有java代码的同一个portlet? – German

+0

我编辑了答案。您将看到如何从jsp调用Java代码。 –

+0

如果我粘贴此代码,它不起作用。我真的不明白为什么,只是空的portlet没有任何短信。 P.S.为什么我们必须重写not render()方法,但doView()? 这段代码看起来很简单,我非常沮丧:/ – German