liferay 5.2.3 版本下,使用struts开发portlet

首先介绍一下开发环境:

    jdk1.5;

    eclipse 3.3;

   liferay 5.2.3(tomcat版);

   oracle 10g(liferay的数据表需要导入,具体的配置在我的另一篇blog(

 关 于liferay启动界面(在浏览器里录入http://localhost:8080后打开的界面)的定制

)中有).

 

1.首先进入eclipse创建一个web project.起名为:vendorportal;

2.创建一个TodoAction java类,package为:com.sinoprof.vendorportal.todo.action,该类继承PortletAction类(该类在portal-impl.jar中);

3.在该类中覆盖方法:processAction和render 方法;其中render是最终portal会向客户端返回的界面,而processAction是接收客户端上<actionurl />请求的方法.

   这两个类的运行顺序是:首先所有对portlet的请求首先会进入processAction方法,处理完毕后,会调用render方法向客户端发送portlet处理完毕后的界面.

4.在该类的rendor方法中,我简单的写入了 return mapping.findForward("portlet.vendorportal.todo.view");

5.这样就可以完成我们的action类的开发了,该该类编译后的class文件放至liferay主目录的web-info/classes目录下(package不要忘了).当然这只是个简单的例子,没有太多业务逻辑的功能,比较简单.

6.开发一个jsp(view.jsp)来显示处理后的内容,该文件需要放至在(liferay主目录的/html/vendorportlet/todo目录下),内容如下:

 

 

7.下面就是如何在liferay中配置该portlet了,下面的几步就比较关键了:

    首先我们需要为我们的portlet在liferay中起一个唯一的id(注意id不只可以是数字,也可以为字符),这里我使用了todolist的id名称.

    (1)在liferay-portlet.xml(该文件在WEB-INFO目录下)中增加如下内容:

         <portlet>
        <portlet-name>todolist</portlet-name> /**portlet的id*/
        <icon>/html/icons/calendar.png</icon>  /**在portlet的界面中显示的引导图片*/
        <struts-path>todolist</struts-path>      /**该值我还不清楚是什么意义*/
        <open-search-class>com.liferay.portlet.calendar.util.CalendarOpenSearchImpl</open-search-class>
        <control-panel-entry-category>content</control-panel-entry-category>
        <control-panel-entry-weight>5.0</control-panel-entry-weight>
        <preferences-unique-per-layout>false</preferences-unique-per-layout>
        <use-default-template>false</use-default-template>
        <show-portlet-access-denied>true</show-portlet-access-denied>
        <show-portlet-inactive>true</show-portlet-inactive>
        <restore-current-view>false</restore-current-view>
        <scopeable>true</scopeable>
        <private-request-attributes>false</private-request-attributes>
        <private-session-attributes>false</private-session-attributes>
        <render-weight>50</render-weight>
        <header-portlet-css>/html/portlet/calendar/css.jsp</header-portlet-css> /**这是portlet中jsp文件使用的私有css文件*/
        <css-class-wrapper>portlet-calendar</css-class-wrapper>
    </portlet>

   (2)在liferay-display.xml中增加portlet所属的组别,这一步的操作主要是以管理员的身份进入后,可以在add application操作中显示portlet:

               <category name="category.news">
                   <portlet id="39" />
                   <portlet id="83" />
                    <portlet id="84" />
                    <portlet id="todolist" />
                    <portlet id="option" />
                    <portlet id="publicnotice" />
                </category>

   (3)在portlet-custom.xml中增加如下内容:

       <portlet>
        <portlet-name>todolist</portlet-name> /**portlet的id*/
        <display-name>todo</display-name>
        <portlet-class>com.liferay.portlet.StrutsPortlet</portlet-class>
        <init-param>
            <name>view-action</name>
            <value>/vendorportal/todo/view</value> /**在structs-config.xml中配置的path*/
        </init-param>


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

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

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

        <security-role-ref>
            <role-name>guest</role-name>
        </security-role-ref>

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

        <security-role-ref>
        <role-name>user</role-name>
        </security-role-ref>
    </portlet>

  (4) 在struts-config.xml的节点<action-mappings>中增加如下内容:

               <action path="/vendorportal/todo/view"  /**该值与liferay-custom.xml的value-action值对应*/

                       type="com.sinoprof.vendorportal.todo.action.TodoAction"> 
                     <forward name="portlet.vendorportal.todo.view" /**该值与todoAction类中的mapping.findforward中的参数值对应*/

                          path="portlet.vendorportal.todo.view" /> 
                </action>

  (5) 在tiles-defs.xml(struts的界面布局管理配置文件)文件中配置如下内容:

       <definition name="portlet.vendorportal.todo" extends="portlet" /> 
       <definition name="portlet.vendorportal.todo.view " extends="portlet.vendorportal.todo"> 
         <put name="portlet_content" value="/vendorportlet/todo/view.jsp "  (view.jsp放置在html/vendorportlet/todo/目录下) /> 
       </definition>

   经过以上步聚就可完成一个portlet在liferay中的配置了,现在我们就可以启动liferay中tomcat的startup.bat来启动.默认界面中我们开发的liferay不会在界面中显示,这里有两个方法:

    (1)直接修改数据表layout;

    (2)以管理员身份登录后,使用add application功能将portlet加至界面.

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值