liferay开发(二)开发详细举例--例一

 

一.Liferay开发:

2种方法,一种为自动生成框架结构,以及一些配置文件,还有一种方法是手动添加这些文件。前者速度比较快,但是不够灵活,无用的代码比较多,在手动写过配置文件后就不能够再用自动生成的方法来开发了,这样会使得配置文件被改动,而出现许多错误异常。后者虽然速度比较慢,但是对于熟练的开发者来说这种比较方便,灵活。

 

例一  

仿照ext中原来的例子reports

1.    ext-impl/src下新建package,命名为com.ext.portlet.hello,新建package,命名为com.ext.portlet.hello.action。在com.ext.portlet.hello中新建类HelloPortlet,在com.ext.portlet.hello.action中新建类HelloAction。在HelloPortlet中加入以下代码package com.ext.portlet.hello;

 

import java.io.IOException;

 

import javax.portlet.PortletException;

import javax.portlet.PortletPreferences;

import javax.portlet.RenderRequest;

import javax.portlet.RenderResponse;

 

import com.liferay.portlet.StrutsPortlet;

 

 

public class HelloPortlet extends StrutsPortlet {

    public void doView(RenderRequest req, RenderResponse res)

           throws IOException,PortletException {

       PortletPreferences prefs = req.getPreferences();

 

       System.out.println(prefs.getValue("test", ""));

 

       super.doView(req, res);

    }

 

}

HelloAction中加入以下代码

package com.ext.portlet.hello.action;

 

import com.liferay.portal.struts.PortletAction;

import com.liferay.portal.kernel.util.Constants;

import java.util.ArrayList;

import java.util.List;

import javax.portlet.PortletConfig;

import javax.portlet.RenderRequest;

import javax.portlet.RenderResponse;

import javax.portlet.WindowState;

import javax.servlet.jsp.PageContext;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

 

public class HelloAction extends PortletAction {

    public ActionForward render(ActionMapping mapping, ActionForm form,

           PortletConfig config, RenderRequest req, RenderResponse res)

           throws Exception {

       if (req.getWindowState().equals(WindowState.NORMAL)) {

           return mapping.findForward("portlet.ext.hello.view");

       } else {

           List reports = new ArrayList();

           reports.add("One");

           reports.add("Two");

           reports.add("Three");

           req.setAttribute("reports", reports);

           return mapping.findForward("portlet.ext.hello.view_reports");

       }

    }

 

}

2.    ext-web/docroot/html/portlet/ext文件夹下新建文件夹hello,在其中加入JSP文件,init.jspview.jspview_reports.jsp

       init.jsp中加入以下代码:

<%@ include file="/html/common/init.jsp" %>

<portlet:defineObjects />

<%

PortletPreferences prefs = renderRequest.getPreferences();

%>

    view.jsp中加入以下代码:

<%@ include file="/html/portlet/ext/hello/init.jsp" %>

 

<a href="<portlet:renderURL windowState="<%= WindowState.MAXIMIZED.toString() %>" />">Test <%= prefs.getValue("test", "") %></a>

    view_reports.jsp中加入以下代码:

<%@ include file="/html/portlet/ext/hello/init.jsp" %>

 

<%

List reports = (List)request.getAttribute("reports");

%>

 

<%

for (int i = 0; i < reports.size(); i++) {

    String reportName = (String)reports.get(i);

%>

 

    <%= reportName %><br>

 

<%

}

%>

3.    然后在ext-web/docroot/WEB-INF中添加配置:

    配置文件为5个,分别为:liferay-display.xml    liferay-portlet-ext.xml    portlet-ext.xml      struts-config.xml(struts-config-ext.xml)            tiles-defs.xml(tiles-defs-ext.xml)

       分别修改:

       liferay-display.xml中加入<portlet id=”hello” />

       liferay-portlet-ext.xml中加入

<portlet>

       <portlet-name>hello</portlet-name>

       <struts-path>ext/hello</struts-path>

       <use-default-template>false</use-default-template>

    </portlet>

    liferay-portlet-ext.xml中加入

           <portlet>

       <portlet-name>hello</portlet-name>

       <display-name>hello</display-name>

       <portlet-class>com.ext.portlet.hello.HelloPortlet</portlet-class>

       <init-param>

           <name>view-action</name>

           <value>/ext/hello/view_reports</value>

       </init-param>

       <expiration-cache>0</expiration-cache>

       <supports>

           <mime-type>text/html</mime-type>

       </supports>

       <resource-bundle>com.liferay.portlet.StrutsResourceBundle</resource-bundle>

       <portlet-preferences>

           <preference>

              <name>test</name>

              <value>123456</value>

           </preference>

       </portlet-preferences>

       <security-role-ref>

           <role-name>power-user</role-name>

       </security-role-ref>

       <security-role-ref>

           <role-name>user</role-name>

       </security-role-ref>

    </portlet>

    struts-config.xml(struts-config-ext.xml)中加入

              <action path="/ext/hello/view_reports" type="com.ext.portlet.hello.action.HelloAction">

           <forward name="portlet.ext.hello.view" path="portlet.ext.hello.view" />

           <forward name="portlet.ext.hello.view_reports" path="portlet.ext.hello.view_reports" />

       </action>

    tiles-defs.xml(tiles-defs-ext.xml)中加入

           <definition name="portlet.ext.hello.view" extends="portlet">

       <put name="portlet_content" value="/portlet/ext/hello/view.jsp" />

    </definition>

 

    <definition name="portlet.ext.hello.view_reports" extends="portlet">

       <put name="portlet_content" value="/portlet/ext/hello/view_reports.jsp" />

    </definition>

4.    修改portlet的名字,在ext-impl/content下的Language-ext.properties可以修改portlet的标题名字。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值