<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--> <!-- [if gte mso 10]> <mce:style><!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} --> <!-- [endif]-->
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 个片断组成,可以分为两类:
<!-- [if !supportLists]-->1、 <!-- [endif]-->Portlet : jsmin-3 , jsmin-4 , jsmin-5 , jsmin-11 , jsmin-12
<!-- [if !supportLists]-->2、 <!-- [endif]-->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 配置读到对象里,然后采用递归的方法从里向外一层层地生成页面代码。仍以首页为例,页面生成的过程如下:
<!-- [if !supportLists]-->1) <!-- [endif]-->生成 Jsmin-3 片断的代码
<!-- [if !supportLists]-->2) <!-- [endif]-->生成 Jsmin-4 片断的代码
<!-- [if !supportLists]-->3) <!-- [endif]-->生成 Jsmin-5 片断的代码
<!-- [if !supportLists]-->4) <!-- [endif]-->生成 Jsmin-2 片断的代码(包含 Jsmin-3 , Jsmin-4 和 Jsmin-5 )
<!-- [if !supportLists]-->5) <!-- [endif]-->生成 Jsmin-11 片断的代码
<!-- [if !supportLists]-->6) <!-- [endif]-->生成 Jsmin-12 片断的代码
<!-- [if !supportLists]-->7) <!-- [endif]-->生成 Jsmin-10 片断的代码(包含 Jsmin-11 和 Jsmin-12 )
8)生成 Jsmin-1 片断的代码(整合页面代码)
本文介绍了Jetspeed中页面配置文件(psml)的结构与内容,包括portlet与layout类型的片段定义及其实现方式,并详细展示了首页配置示例及其页面生成过程。
108

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



