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 片断的代码(整合页面代码)
本文介绍了Jetspeed门户系统中页面布局与portlet配置的具体方法,包括如何使用psml文件定义portlet的位置及布局形式。
108

被折叠的 条评论
为什么被折叠?



