Portlet在门户中如何布局

本文介绍了Jetspeed门户系统中页面布局与portlet配置的具体方法,包括如何使用psml文件定义portlet的位置及布局形式。

Portlet 接口规范定义了 portlet 开发标准,确定了 Portlet Portal 之间的调用规则。但并没有定义在一个页面中 Portlet 怎么布局,怎么将多个 portlet 整合在一起展现到一个页面里。各厂商实现方式不尽相同,但一般都是使用 div 标签来定位一个 Portlet ,这样可实现拖拽效果。

Jetspeed 中一个页面包含几个 portlet ,以及每个 portlet 摆放的位置是定义在 psml 中的( psml 可以保存在文件里也可保存到数据库中)。以首页为例,其 psml 定义如下:

<?xml version="1.0" encoding="UTF-8"?>

<page id="/default-page.psml" hidden="false">

    <security-constraints>

        <security-constraints-ref>public-view</security-constraints-ref>

    </security-constraints>

    <title>Welcome to Jetspeed 2</title>

    <short-title>Welcome to Jetspeed 2</short-title>

    <defaults></defaults>

    <fragment id="jsmin-1" type="layout" name="jetspeed-layouts::VelocityOneColumn">

        <fragment id="jsmin-2" type="layout" name="jetspeed-layouts::VelocityTwoColumns">

             <fragment id="jsmin-3" type="portlet" name="j2-admin::LoginPortlet">

                <property name="row" value="1"></property>

                <property name="column" value="0"></property>

            </fragment>

            <fragment id="jsmin-4" type="portlet" name="j2-admin::LocaleSelector">

                <property name="row" value="0"></property>

                <property name="column" value="0"></property>

            </fragment>

            <fragment id="jsmin-5" type="portlet" name="j2-admin::ForgottenPasswordPortlet">

                <property name="row" value="0"></property>

                <property name="column" value="1"></property>

            </fragment>

        </fragment>

        <fragment id="jsmin-10" type="layout" name="jetspeed-layouts::VelocityTwoColumns">

            <fragment id="jsmin-11" type="portlet" name="j2-admin::WelcomeToJetspeed">

                <property name="column" value="0"></property>

                <property name="row" value="0"></property>

            </fragment>

            <fragment id="jsmin-12" type="portlet" name="j2-admin::AboutJetspeed">

                <property name="column" value="1"></property>

                <property name="row" value="0"></property>

            </fragment>

        </fragment>

    </fragment>

    <metadata name="title" xml:lang="fr">Bienvenue a Jetspeed</metadata>

    <metadata name="title" xml:lang="ja">Jetspeed 2 へようこそ </metadata>

    <metadata name="title" xml:lang="es">¡Bienvenido a Jetspeed 2!</metadata>

    <metadata name="title" xml:lang="hu">Köszönti a Jetspeed 2!</metadata>

    <metadata name="title" xml:lang="zh"> 欢迎来到 Jetspeed 2</metadata>

    <metadata name="title" xml:lang="zh_TW"> 歡迎來到 Jetspeed 2</metadata>

    <metadata name="title" xml:lang="ko">Jetspeed 2 오신 것을 환영합니다 </metadata>

</page>

从配置文件中可看到这个页面由 8 个片断组成,可以分为两类:

1、  Portlet jsmin-3 jsmin-4 jsmin-5 jsmin-11 jsmin-12

2、  Layout jsmin-1 jsmin-2 jsmin-10

Portlet 类型的片断是定义要显示哪一个 portlet ,其中参数 column row 定义此 Portlet 在父布局片断中所处的位置。一个 portlet 必定有一个父布局片断。

Layout 类型的片断是指此片断采用什么格式的布局形式,目前包含:一列,两列( 50% 50% ),两列( 15%,85% ),两列( 25%,75% ),三列( 33%,33%,33% ),四列( 20%,30%,30%,20% )。布局片断是通过一个 portlet 来组织页面内容的。

 

       系统会先把 psml 配置读到对象里,然后采用递归的方法从里向外一层层地生成页面代码。仍以首页为例,页面生成的过程如下:

1)      生成 Jsmin-3 片断的代码

2)      生成 Jsmin-4 片断的代码

3)      生成 Jsmin-5 片断的代码

4)      生成 Jsmin-2 片断的代码(包含 Jsmin-3 Jsmin-4 Jsmin-5

5)      生成 Jsmin-11 片断的代码

6)      生成 Jsmin-12 片断的代码

7)      生成 Jsmin-10 片断的代码(包含 Jsmin-11 Jsmin-12

       8)生成 Jsmin-1 片断的代码(整合页面代码)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peterwanghao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值