實(shí)踐Java
          Practice in Java
          posts - 6,  comments - 20,  trackbacks - 0
           

                創(chuàng)建一個(gè)名為MyPortlet類(lèi)繼承至com.liferay.portlet.StrutsPortlet類(lèi).StrutsPortlet實(shí)現(xiàn)了Liferay的portlet規(guī)范,繼承后只需覆蓋感興趣的方法即可,如下代碼:

           

           1 package com.ext.portlet.myportlet;
           2 
           3 import com.liferay.portlet.StrutsPortlet;
           4 
           5 import java.io.IOException;
           6 
           7 import javax.portlet.PortletException;
           8 import javax.portlet.PortletPreferences;
           9 import javax.portlet.RenderRequest;
          10 import javax.portlet.RenderResponse;
          11 
          12 /**
          13  * <a href="ReportsPortlet.java.html"><b><i>View Source</i></b></a>
          14  *
          15  * @author Brian Wing Shun Chan
          16  *
          17  */
          18 public class MyPortlet extends StrutsPortlet {
          19  
          20      public void doView( RenderRequest renderRequest, RenderResponse renderResponse)  throws IOException, PortletException {
          21 
          22           PortletPreferences prefs = renderRequest.getPreferences();
          23 
          24           System.out.println(prefs.getValue("param1""")); //測(cè)試一下配置的參數(shù)讀取
          25           super.doView(renderRequest, renderResponse);
          26      }
          27 
          28 }
          29 


           

            建立一個(gè)Struts的Action用于處理portlet的請(qǐng)求:

           1 package com.ext.portlet.myportlet.action;
           2 import java.util.ArrayList;
           3 import java.util.List;
           4 
           5 import javax.portlet.PortletConfig;
           6 import javax.portlet.RenderRequest;
           7 import javax.portlet.RenderResponse;
           8 import javax.portlet.WindowState; 
           9 import org.apache.struts.action.ActionForm;
          10 import org.apache.struts.action.ActionForward;
          11 import org.apache.struts.action.ActionMapping;
          12 
          13 import com.liferay.portal.struts.PortletAction;
          14 public class ViewMyPortletAction  extends PortletAction {
          15 
          16     public ActionForward render(
          17             ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
          18             RenderRequest renderRequest, RenderResponse renderResponse)
          19         throws Exception {
          20 
          21         //根據(jù)portlet的窗口變化Forward到不同的頁(yè)面
          22         if (renderRequest.getWindowState().equals(WindowState.NORMAL)) {
          23             return mapping.findForward("portlet.ext.myportlet.view");
          24         }
          25         else {
          26             List reports = new ArrayList(); 
          27             //測(cè)試一下從Action到頁(yè)面的對(duì)象傳遞
          28             reports.add("");
          29             reports.add("");
          30             reports.add("");
          31             reports.add("");
          32             reports.add("");
          33             renderRequest.setAttribute("myportlet", reports);
          34 
          35             return mapping.findForward("portlet.ext.myportlet.view_myportlet");
          36         }
          37     }
          38 
          39 }

          配置一個(gè)portlet實(shí)例,在Ext工程下文件:/ext/ext-web/docroot/WEB-INF/portlet-ext.xml 添加如下配置:
           1 <portlet>
           2         <portlet-name>EXT_2</portlet-name>
           3         <display-name>MyPortlet</display-name>
           4         <portlet-class>com.ext.portlet.myportlet.MyPortlet</portlet-class><!-- 剛才建立的portlet處理對(duì)象 -->
           5         <init-param>
           6             <name>view-action</name>
           7             <value>/ext/myportlet/view_myportlet</value><!-- portal首頁(yè)小窗口的指向路徑 -->
           8         </init-param>
           9         <expiration-cache>0</expiration-cache>
          10         <supports>
          11             <mime-type>text/html</mime-type>
          12         </supports>
          13         <resource-bundle>com.liferay.portlet.StrutsResourceBundle</resource-bundle>
          14         <portlet-preferences>
          15             <preference>
          16                 <name>param1</name><!-- 代碼中要讀的測(cè)試參數(shù) -->
          17                 <value>Mail</value>
          18             </preference> 
          19             <preference>
          20                 <name>param2</name>
          21                 <value>OA</value>
          22             </preference> 
          23         </portlet-preferences>
          24         <security-role-ref>
          25             <role-name>power-user</role-name>
          26         </security-role-ref>
          27         <security-role-ref>
          28             <role-name>user</role-name>
          29         </security-role-ref>
          30     </portlet>    


          /ext/ext-web/docroot/WEB-INF/liferay-portlet-ext.xml 文件的配置,增加如下
          1 <portlet>
          2         <portlet-name>EXT_2</portlet-name>
          3         <struts-path>ext/myportlet</struts-path>
          4         <use-default-template>false</use-default-template>
          5     </portlet>


          定義portlet控制面板中portlet的分組/ext/ext-web/docroot/WEB-INF/liferay-display.xml

          1     <category name="category.sample">
          2         <portlet id="47" />
          3         <portlet id="48" />
          4         <portlet id="50" />
          5         <portlet id="66" />
          6         <portlet id="EXT_1" />
          7         <portlet id="EXT_2" /><!-- 增加到這個(gè)分組,可以任意指定組 -->
          8     </category>

          portlet頁(yè)面與處理名稱(chēng)配置,在/ext/ext-web/docroot/WEB-INF/tiles-defs.xml文件下添加:
          1 <definition name="portlet.ext.myportlet.view" extends="portlet">
          2         <put name="portlet_content" value="/portlet/ext/myportlet/view.jsp" />
          3     </definition>
          4 
          5     <definition name="portlet.ext.myportlet.view_myportlet" extends="portlet">
          6         <put name="portlet_content" value="/portlet/ext/myportlet/view_myportlet.jsp" />
          7     </definition>

          處理頁(yè)面portlet的StrutsAction配置 /ext/ext-web/docroot/WEB-INF/struts-config.xml

          1 <action path="/ext/myportlet/view_myportlet" type="com.ext.portlet.myportlet.action.ViewMyPortletAction">
          2             <forward name="portlet.ext.myportlet.view" path="portlet.ext.myportlet.view" />
          3             <forward name="portlet.ext.myportlet.view_myportlet" path="portlet.ext.myportlet.view_myportlet" />
          4         </action>

          通過(guò)上面的簡(jiǎn)單配置,可以基本可以看出portlet在Liferay portlet容器中怎樣配置的,也可以初步了解到portal容器怎樣加載和初始化這些portlet的了,上述配置中有幾個(gè)JSP頁(yè)面這幾個(gè)頁(yè)面可以先用Ext工程自帶的例子來(lái)創(chuàng)建這些頁(yè)面文件,Liferay提供一些用于支持portal的標(biāo)簽.

          在Ext工程目錄中創(chuàng)建頁(yè)面目錄 /ext/ext-web/docroot/html/portlet/ext/myportlet 并增加如下頁(yè)面文件,文件名必須和tiles-defs.xml文件中指定的對(duì)應(yīng).

          init.jsp   
          view_myportlet.jsp --打開(kāi)portlet的顯示頁(yè)面
          view.jsp                --在portal首頁(yè)顯示小窗口的頁(yè)面

          view.jsp內(nèi)容
          1 <%@ page contentType="text/html; charset=UTF-8"%>
          2 <%@ include file="/html/portlet/ext/reports/init.jsp" %>
          3 <href="<portlet:renderURL windowState="<%= WindowState.MAXIMIZED.toString() %>" />&myparam=Mail">郵件系統(tǒng):<%= prefs.getValue("param1""none"%> </a>
          4 <br>
          5 <href="<portlet:renderURL windowState="<%= WindowState.MAXIMIZED.toString() %>" />&myparam=OA">辦公系統(tǒng):<%= prefs.getValue("param2""none"%> </a>
          6 

          windowState是portlet規(guī)范里內(nèi)置參數(shù),myparam是自定義參數(shù),用于做測(cè)試.



          編輯完后使用ANT部署,然后啟動(dòng)Tomcat,將看到剛才創(chuàng)建的portlet已經(jīng)成功部署到應(yīng)用當(dāng)中





          注意:在配置portlet的時(shí)候我遇到了配置參數(shù)被寫(xiě)入數(shù)據(jù)庫(kù)了,在測(cè)試的時(shí)候配置參數(shù)與顯示出來(lái)老不能同步,我直接從數(shù)據(jù)庫(kù)表中給D掉了,目前還沒(méi)研究這個(gè)部署的詳細(xì)問(wèn)題!
          OK!!第一個(gè)例子成功了!
          posted on 2009-03-10 10:06 弦驚塞外 閱讀(1425) 評(píng)論(7)  編輯  收藏

          FeedBack:
          # re: Liferay Portal學(xué)習(xí)
          2009-06-23 13:05 | 沙暖睡鴛鴦
          請(qǐng)問(wèn)為什么我的頁(yè)面上“郵件系統(tǒng)”,“辦公系統(tǒng)”顯示亂碼啊,我用的是5.2.3  回復(fù)  更多評(píng)論
            
          # re: Liferay Portal學(xué)習(xí) [未登錄](méi)
          2009-07-02 14:19 | 弦驚塞外
          @沙暖睡鴛鴦


          頁(yè)面的字符集設(shè)置問(wèn)題吧  回復(fù)  更多評(píng)論
            
          # re: Liferay Portal學(xué)習(xí)
          2009-09-01 10:11 | 彩霞
          為什么我啟動(dòng)tomcat時(shí)有錯(cuò)誤  回復(fù)  更多評(píng)論
            
          # re: Liferay Portal學(xué)習(xí)
          2010-02-25 17:22 | wt
          <%= prefs.getValue("param1", "none") %>
          我的prefs怎么無(wú)法識(shí)別啊,其余的和你的都一樣  回復(fù)  更多評(píng)論
            
          # re: Liferay Portal學(xué)習(xí)
          2010-06-01 13:36 | cf_yang
          @wt
          需要修改init.jsp
          PortletPreferences preferences = renderRequest.getPreferences();
          將preferences改為prefs  回復(fù)  更多評(píng)論
            
          # re: Liferay Portal學(xué)習(xí)
          2010-06-01 13:41 | cf_yang
          @彩霞
          我也出現(xiàn)了你描述的錯(cuò)誤.找了好多資料,才發(fā)現(xiàn)需修改portlet-ext.xml
          將自帶portlet例子EXT_1中下面一行不要換行,一行顯示
          <resource-bundle>com.liferay.portlet.StrutsResourceBundle</resource-bundle>
          可能是liferay的一個(gè)bug.
          你試一下看可以不.
            回復(fù)  更多評(píng)論
            
          # re: Liferay Portal學(xué)習(xí)
          2010-09-02 15:59 | 秋天的童話(huà)
          @沙暖睡鴛鴦
          你把jsp 頁(yè)面編碼為UTF-8 就ok  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          <2010年6月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(3)

          隨筆檔案

          相冊(cè)

          搜索

          •  

          積分與排名

          • 積分 - 6314
          • 排名 - 2842

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 宁津县| 东辽县| 建湖县| 巨鹿县| 霍城县| 扶沟县| 巴楚县| 榆树市| 南澳县| 阿尔山市| 益阳市| 民和| 股票| 乌兰浩特市| 宣威市| 旬阳县| 紫阳县| 比如县| 旺苍县| 乐昌市| 双鸭山市| 周口市| 湘潭县| 金湖县| 武乡县| 呼图壁县| 越西县| 邹城市| 和平区| 雷波县| 瑞昌市| 湟中县| 隆昌县| 四平市| 江门市| 定结县| 珲春市| 兴国县| 庆阳市| 南皮县| 阿尔山市|