<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    實踐Java
    Practice in Java
    posts - 6,  comments - 20,  trackbacks - 0
     

          創建一個名為MyPortlet類繼承至com.liferay.portlet.StrutsPortlet類.StrutsPortlet實現了Liferay的portlet規范,繼承后只需覆蓋感興趣的方法即可,如下代碼:

     

     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""")); //測試一下配置的參數讀取
    25           super.doView(renderRequest, renderResponse);
    26      }
    27 
    28 }
    29 


     

      建立一個Struts的Action用于處理portlet的請求:

     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         //根據portlet的窗口變化Forward到不同的頁面
    22         if (renderRequest.getWindowState().equals(WindowState.NORMAL)) {
    23             return mapping.findForward("portlet.ext.myportlet.view");
    24         }
    25         else {
    26             List reports = new ArrayList(); 
    27             //測試一下從Action到頁面的對象傳遞
    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 }

    配置一個portlet實例,在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處理對象 -->
     5         <init-param>
     6             <name>view-action</name>
     7             <value>/ext/myportlet/view_myportlet</value><!-- portal首頁小窗口的指向路徑 -->
     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><!-- 代碼中要讀的測試參數 -->
    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" /><!-- 增加到這個分組,可以任意指定組 -->
    8     </category>

    portlet頁面與處理名稱配置,在/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>

    處理頁面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>

    通過上面的簡單配置,可以基本可以看出portlet在Liferay portlet容器中怎樣配置的,也可以初步了解到portal容器怎樣加載和初始化這些portlet的了,上述配置中有幾個JSP頁面這幾個頁面可以先用Ext工程自帶的例子來創建這些頁面文件,Liferay提供一些用于支持portal的標簽.

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

    init.jsp   
    view_myportlet.jsp --打開portlet的顯示頁面
    view.jsp                --在portal首頁顯示小窗口的頁面

    view.jsp內容
    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">郵件系統:<%= prefs.getValue("param1""none"%> </a>
    4 <br>
    5 <href="<portlet:renderURL windowState="<%= WindowState.MAXIMIZED.toString() %>" />&myparam=OA">辦公系統:<%= prefs.getValue("param2""none"%> </a>
    6 

    windowState是portlet規范里內置參數,myparam是自定義參數,用于做測試.



    編輯完后使用ANT部署,然后啟動Tomcat,將看到剛才創建的portlet已經成功部署到應用當中





    注意:在配置portlet的時候我遇到了配置參數被寫入數據庫了,在測試的時候配置參數與顯示出來老不能同步,我直接從數據庫表中給D掉了,目前還沒研究這個部署的詳細問題!
    OK!!第一個例子成功了!
    posted on 2009-03-10 10:06 弦驚塞外 閱讀(1419) 評論(7)  編輯  收藏

    FeedBack:
    # re: Liferay Portal學習
    2009-06-23 13:05 | 沙暖睡鴛鴦
    請問為什么我的頁面上“郵件系統”,“辦公系統”顯示亂碼啊,我用的是5.2.3  回復  更多評論
      
    # re: Liferay Portal學習 [未登錄]
    2009-07-02 14:19 | 弦驚塞外
    @沙暖睡鴛鴦


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

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    <2009年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(3)

    隨筆檔案

    相冊

    搜索

    •  

    積分與排名

    • 積分 - 6260
    • 排名 - 2848

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产日产成人免费视频在线观看| 最近免费mv在线观看动漫| 中文字幕无码播放免费| 亚洲AV乱码久久精品蜜桃| 全免费a级毛片免费看| 国产精品亚洲一区二区三区在线| a级特黄毛片免费观看| 亚洲毛片基地4455ww| 亚洲啪啪免费视频| 全黄a免费一级毛片人人爱| 亚洲av无码偷拍在线观看| 国产免费一区二区三区VR| 最新亚洲人成无码网站| 四虎国产精品免费视| 国产va免费观看| 亚洲国产精品无码专区在线观看| 免费一区二区三区| 亚洲最大黄色网址| 成人毛片免费观看视频大全| 精品免费AV一区二区三区| 久久久久一级精品亚洲国产成人综合AV区| 国产AV日韩A∨亚洲AV电影| 激情97综合亚洲色婷婷五 | 亚洲高清在线播放| 午夜精品免费在线观看| 亚洲三级中文字幕| 国产精品成人免费综合| 精品97国产免费人成视频| 亚洲永久永久永久永久永久精品| 免费一级特黄特色大片| 久久久久久久综合日本亚洲| av大片在线无码免费| 国产亚洲精品第一综合| 亚洲AV天天做在线观看| 成人毛片视频免费网站观看| 国产线视频精品免费观看视频| 亚洲第一页在线播放| 亚洲福利精品一区二区三区| 一级毛片**不卡免费播| www亚洲精品久久久乳| 婷婷亚洲综合五月天小说|