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

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

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

    Junky's IT Notebook

    統(tǒng)計

    留言簿(8)

    積分與排名

    WebSphere Studio

    閱讀排行榜

    評論排行榜

    關(guān)于Liferay的配置文件 —— 基于Struts開發(fā)Portlet

    結(jié)合Liferay實例sample-struts-portlet,基于Struts開發(fā)Portlet一般具有以下配置文件:
    • liferay-display.xml
    • liferay-portlet.xml
    • portlet.xml
    • struts-config.xml
    • tiles-defs.xml
    • web.xml


    (1)liferay-display.xml (定義Portal 中Portlet 管理的目錄結(jié)構(gòu))
            配置在Portlet 的顯示名稱,以及該portlet 在顯示列表中所在的目錄。值得注意的是該處并沒有直接給出在Portlet 顯示列表中的顯示名字,而是給出了Portlet ID,根據(jù)在porlet.xml 中portlet ID與Name 的關(guān)聯(lián),可得到該P(yáng)ortlet 的顯示名字。

            <display>
                <category name="category.test">
                    <portlet id="sample_struts_portlet" />
                </category>
            </display>

            效果:添加porlet 內(nèi)容時,也就是在點擊“add content” 時,名叫sample_struts_portlet 的portlet 將在目錄中的test 項下顯示。

    (2)liferay-portlet.xml (定義基于Liferay Portal 下的Portlet 的特有屬性)
        該配置文件定義portlet 屬性和角色,該配置文件對基于JSR168的 portlet.xml 的屬性進(jìn)行擴(kuò)展。

            <liferay-portlet-app>
            <portlet>
                <!-- 配置portlet 名,該名應(yīng)對應(yīng)于liferay-display.xml 中portlet 的id 屬性 -->
                <portlet-name>sample_struts_portlet</portlet-name>
                <!-- 配置portlet 的實現(xiàn)類,該類響應(yīng)該portlet 的請求,實現(xiàn)功能  -->
                <portlet-url-class>
                        com.liferay.portal.apache.bridges.struts.LiferayStrutsPortletURLImpl
                </portlet-url-class>

                <use-default-template>true</use-default-template>
                <restore-current-view>true</restore-current-view>
            </portlet>
            <!-- 配置該portlet 的角色,以及角色的顯示名字,角色名role-name 是由portlet.xml 中進(jìn)行定義 -->
            <role-mapper>
                <role-name>administrator</role-name>
                <role-link>Administrator</role-link>
            </role-mapper>
            <role-mapper>
                <role-name>guest</role-name>
                <role-link>Guest</role-link>
            </role-mapper>
            <role-mapper>
                <role-name>power-user</role-name>
                <role-link>Power User</role-link>
            </role-mapper>
            <role-mapper>
                <role-name>user</role-name>
                <role-link>User</role-link>
            </role-mapper>
        </liferay-portlet-app>

        效果:該portlet 由com.liferay.portal.apache.bridges.struts.LiferayStrutsPortletURLImpl 類的實例進(jìn)行處理,允許使用模版和實時刷新頁面。可配置administrator,guest,power-user,user 四種角色對其擁有不同的權(quán)限。

    (3)portlet.xml (Portlet 的標(biāo)準(zhǔn)屬性,該配置文件中的各項屬性符合JSR168 標(biāo)準(zhǔn),并非Liferay專用)
           該配置文件設(shè)置Portlet的各個屬性,該各項屬性在Portlet初始化時得以加載。

    <portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">

        <portlet>
            <portlet-name>sample_struts_portlet</portlet-name>

           <!-- display-name 即為該P(yáng)ortlet顯示的名字,liferay-display.xml 中配置了Portlet  id,關(guān)聯(lián)該配置文件可找到其顯示的名字,如下“Sample Struts Portlet" -->
            <display-name>Sample Struts Portlet</display-name>

          
    <!-- 由于在開發(fā)Portlet 時必須繼承Portlet 的基礎(chǔ)類,而此處是基于Struts 開發(fā)Portlet 時可繼承該類  -->
            <portlet-class>org.apache.portals.bridges.struts.StrutsPortlet</portlet-class>
           
          
    <!-- init-param 標(biāo)簽表示Portlet 的初始化參數(shù) ,由name 標(biāo)簽和 value 標(biāo)簽指明其名字和值的一對數(shù)據(jù) -->
            <init-param>
                <name>ServletContextProvider</name>
               
    <!-- 其值為該P(yáng)ortlet 可接收響應(yīng)的URL或者類,URL 對應(yīng)的類是哪個由Struts-config.xml 定義-->
                <value>com.liferay.util.apache.bridges.struts.LiferayServletContextProviderWrapper</value>
            </init-param>
            <init-param>
                <name>EditPage</name>
                <value>/portlet_action/sample_struts_portlet/edit</value>
            </init-param>
            <init-param>
                <name>HelpPage</name>
                <value>/portlet_action/sample_struts_portlet/help</value>
            </init-param>
            <init-param>
                <name>ViewPage</name>
                <value>/portlet_action/sample_struts_portlet/view</value>
            </init-param>


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

          
    <!-- 定義該P(yáng)ortlet 所支持的功能,體現(xiàn)在每個Portlet 的展現(xiàn)模式 -->
            <supports>
                <mime-type>text/html</mime-type>
                <portlet-mode>edit</portlet-mode>
                <portlet-mode>help</portlet-mode>
            </supports>


            <portlet-info>
                <title>Sample Struts Portlet</title>
                <short-title>Sample Struts Portlet</short-title>
                <keywords>Sample Struts Portlet</keywords>
            </portlet-info>

           
    <!-- 指明對該P(yáng)ortlet 可能擁有權(quán)限的角色,該角色定義決定了liferay-portlet.xml 所配置的角色名  -->
            <security-role-ref>
                <role-name>administrator</role-name>
            </security-role-ref>
            <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>
    </portlet-app>

    效果:
    定義了Portlet 的基本信息,展現(xiàn)方式,以及對該P(yáng)ortlet 可能分配權(quán)限的用戶角色。


    (4)struts-config.xml (該配置文件為Struts 的配置文件,并非Liferay 專用)
    <struts-config>

        <!-- Forms Beans -->
        <form-beans>
            <form-bean name="subscribeForm" type="com.sample.struts.struts.form.SubscribeForm" />
            <form-bean name="unsubscribeForm" type="com.sample.struts.struts.form.UnsubscribeForm" />
            <form-bean name="uploadForm" type="com.sample.struts.struts.form.UploadForm" />
        </form-beans>

        <!-- Action Mappings -->

        <action-mappings>

            <!-- Sample Struts -->

            <action path="/sample_struts_portlet/edit" forward="portlet.sample_struts_portlet.edit" />

            <action path="/sample_struts_portlet/help" forward="portlet.sample_struts_portlet.help" />

            <action path="/sample_struts_portlet/subscribe/action" type="com.sample.struts.struts.action.SubscribeAction" name="subscribeForm" scope="session" validate="true" input="portlet.sample_struts_portlet.subscribe">
                <forward name="/sample_struts_portlet/subscribe_success" path="/portlet_action/sample_struts_portlet/subscribe_success" redirect="true" />
            </action>

                <!--
                ……
                該處省略的雷同的設(shè)置代碼
                 ……
                -->

        <!-- Custom Request Processor -->

        <controller processorClass="org.apache.portals.bridges.struts.PortletTilesRequestProcessor" />

        <!-- Message Resources -->

        <message-resources parameter="content.test.Language" />

        <!-- Tiles Plugin -->

        <plug-in className="org.apache.struts.tiles.TilesPlugin" >
            <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
            <set-property property="moduleAware" value="true" />
            <set-property property="definitions-parser-validate" value="true" />
        </plug-in>

        <!-- Validator Plugin -->

        <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
            <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
        </plug-in>
    </struts-config>
    效果:此處可與其它基于Struts 應(yīng)用開發(fā)同樣配置,與Liferay 相互獨立。


    (5)tiles-defs.xml (該配置文件是利用Tile 進(jìn)行頁面的布局管理,并非Liferay 專用)

    <tiles-definitions>


        <!-- 關(guān)于頁面的布局定義,表示當(dāng)請求的Url為 portlet.sample_struts_portlet 則以路徑path參數(shù)指定的 /html/portlet/sample_struts_portlet/template.jsp 頁面進(jìn)行響應(yīng)-->
        <definition name="portlet.sample_struts_portlet" path="/html/portlet/sample_struts_portlet/template.jsp" />
        <!-- 關(guān)于頁面的布局定義,表示名為 portlet.sample_struts_portlet.edit Url 的頁面嵌套頁面 /portlet/sample_struts_portlet/edit.jsp -->
        <definition name="portlet.sample_struts_portlet.edit" extends="portlet.sample_struts_portlet">
            <put name="portlet_content" value="/portlet/sample_struts_portlet/edit.jsp" />
        </definition>
       
        <!--
                ……
                該處省略的雷同的設(shè)置代碼
                 ……
          -->

       
    <tiles-definitions>
      
    效果:此處可與其它基于Tiles 應(yīng)用開發(fā)同樣配置,與Liferay 相互獨立。


    (6)web.xml (該配置文件為Tomcat 的應(yīng)用配置文件,并非Liferay 專用)
    <web-app>
        <!-- 注意:此處的display-name與portlet.xml 中的display-name 含義不同,此處僅標(biāo)識在Tomcat 下的應(yīng)用編寫此不得與其它Portlet 和發(fā)布的其他應(yīng)用標(biāo)識重名 -->
        <display-name>sample-struts-portlet</display-name>

        <context-param>
            <param-name>company_id</param-name>
            <param-value>liferay.com</param-value>
        </context-param>

        <listener>
            <listener-class>com.liferay.portal.kernel.servlet.PortletContextListener</listener-class>
        </listener>

        <servlet>
            <servlet-name>sample_struts_portlet</servlet-name>
            <servlet-class>com.liferay.portal.kernel.servlet.PortletServlet</servlet-class>
            <init-param>
                <param-name>portlet-class</param-name>
                <param-value>org.apache.portals.bridges.struts.StrutsPortlet</param-value>
            </init-param>
            <load-on-startup>0</load-on-startup>
        </servlet>
        <servlet>
            <servlet-name>PortletActionServlet</servlet-name>
            <servlet-class>com.liferay.util.apache.bridges.struts.LiferayPortletServlet</servlet-class>
            <init-param>
                <param-name>config</param-name>
                <param-value>/WEB-INF/struts-config.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet>
            <servlet-name>TestSessionServlet</servlet-name>
            <servlet-class>com.sample.struts.servlet.TestSessionServlet</servlet-class>
            <load-on-startup>2</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>sample_struts_portlet</servlet-name>
            <url-pattern>/sample_struts_portlet/*</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>PortletActionServlet</servlet-name>
            <url-pattern>/portlet_action/*</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>TestSessionServlet</servlet-name>
            <url-pattern>/test_session/*</url-pattern>
        </servlet-mapping>

        <taglib>
            <taglib-uri>http://java.sun.com/portlet</taglib-uri>
            <taglib-location>/WEB-INF/tld/liferay-portlet.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>http://struts.apache.org/tags-bean</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>http://portals.apache.org/bridges/struts/tags-portlet-html</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-portlet-html.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>http://struts.apache.org/tags-logic</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>http://struts.apache.org/tags-nested</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>http://struts.apache.org/tags-tiles</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
        </taglib>
    </web-app>

    效果:此處可與其它基于Tomcat 應(yīng)用開發(fā)同樣配置,但與Liferay 不完全獨立。

    posted on 2007-05-31 14:00 junky 閱讀(1311) 評論(1)  編輯  收藏 所屬分類: portal

    評論

    # re: 關(guān)于Liferay的配置文件 —— 基于Struts開發(fā)Portlet 2007-08-14 16:10 小雪飛刀

    LZ的文章寫得很好!
    請教個問題,我的原有的web應(yīng)用在轉(zhuǎn)變?yōu)镻ortlet時,只需要修改struts-config.xml文件吧,原有的Action都可以復(fù)用否?
    另外,不用Tiles進(jìn)行頁面跳轉(zhuǎn),應(yīng)該也是可以的吧。  回復(fù)  更多評論   

    主站蜘蛛池模板: 日韩毛片免费一二三| 巨胸喷奶水www永久免费| 亚洲欧洲国产成人综合在线观看| 久久免费国产精品| 亚洲日本在线播放| 免费一级毛片不卡不收费| 国产拍拍拍无码视频免费| 狠狠色伊人亚洲综合网站色| 亚洲精品国产精品乱码不卡| 7m凹凸精品分类大全免费| 日韩成人精品日本亚洲| 亚洲成在人天堂在线| 国产aa免费视频| 91短视频免费在线观看| 四虎一区二区成人免费影院网址| 亚洲综合无码一区二区| 亚洲成av人片不卡无码久久| 精品国产sm捆绑最大网免费站| 一级黄色免费大片| 最新亚洲卡一卡二卡三新区| 精品亚洲永久免费精品| 国产成人免费手机在线观看视频| 国产免费一区二区三区在线观看| 毛片亚洲AV无码精品国产午夜| 亚洲色图视频在线观看| 亚洲伊人色欲综合网| 日韩人妻无码免费视频一区二区三区| 色欲国产麻豆一精品一AV一免费| 国产精品亚洲专区无码WEB| 亚洲成a人不卡在线观看| 亚洲日韩中文字幕在线播放| 国产美女精品视频免费观看| 波多野结衣中文字幕免费视频| 十八禁在线观看视频播放免费| 国产亚洲精品第一综合| 亚洲视频无码高清在线| 亚洲最大的成网4438| 亚洲AV永久无码区成人网站| 免费v片在线观看| 国产美女a做受大片免费| 拍拍拍又黄又爽无挡视频免费|