Portlet在门户中如何布局

本文介绍了Jetspeed中页面配置文件(psml)的结构与内容,包括portlet与layout类型的片段定义及其实现方式,并详细展示了首页配置示例及其页面生成过程。
部署运行你感兴趣的模型镜像

<!-- [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 开发标准,确定了 PortletPortal 之间的调用规则。但并没有定义在一个页面中 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-3jsmin-4jsmin-5jsmin-11jsmin-12

<!-- [if !supportLists]-->2、 <!-- [endif]-->Layout jsmin-1jsmin-2jsmin-10

Portlet 类型的片断是定义要显示哪一个 portlet ,其中参数 columnrow 定义此 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-3Jsmin-4Jsmin-5

<!-- [if !supportLists]-->5) <!-- [endif]-->生成 Jsmin-11 片断的代码

<!-- [if !supportLists]-->6) <!-- [endif]-->生成 Jsmin-12 片断的代码

<!-- [if !supportLists]-->7) <!-- [endif]-->生成 Jsmin-10 片断的代码(包含 Jsmin-11Jsmin-12

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

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值