介绍 JetUI

介绍 JetUI

介绍了JetUI Jetspeed版本2.2.1渲染引擎。JetUI是一个替代现在已经弃用并删除的Jetspeed桌面管道。JetUI主要关心的是先进的门户定制和渲染特性。与JetUI,我们并没有放弃纯服务器端渲染。Jetspeed仍将完全支持典型的服务器端呈现门户页面。与版本2.2.1,两个渲染引擎都提供给你直接进行安装:
  1. 典型的(门户页面)的渲染引擎
  2. JetUI的渲染引擎
在本文中,我们介绍了许多新功能的JetUI……
截至2.2.2版本的Jetspeed,有一些局限性那么JetUI现在可以做什么:
  • 不支持自定义的嵌套布局
  • 只有四个主题支持(一列,两列,三列,四列)
  • 不支持先进的模板(DPSML,TPSML)定制
  • JetUI不与Jetspeed分析器工作,jetUI不支持子网站,代替子网站使用空间特性
打开JetUI

有几个选项打开JetUI渲染和定制引擎。第一个选项是使用我们的打包安装Jetspeed安装程序安装程序会问你如果你想安装JetUI或经典的门户管道。你不能同时运行。默认值是JetUI。

第二个选择是使用自定义Builder 构建Jetspeed,构建指南有点长篇大论,有很多信息可参考内部Maven。这里有一些命令来帮助你获得过去的一切……

从自定义构建器:列出所有可用构建命令
mvn jetspeed:mvn -Dlist


构建和部署整个JetUI-enabled portal demo与几个portlet应用程序并将其部署到Tomcat
mvn jetspeed:mvn -Dtarget=ui


构建和部署JetUI-enable minmal与j2-admin portlet应用部署到tomcat
mvn jetspeed:mvn -Dtarget=min-ui

上面两个命令的的升级,也将psml存储到数据库
mvn jetspeed:mvn -Dtarget=ui-dbpsml
mvn jetspeed:mvn -Dtarget=min-ui-dbpsml

第三个选择是手动切换到使用JetUI门户来部署安装Jetspeed。编辑WEB-INF/conf/jetspeed.properties (or WEB-INF/conf/override.properties),您可以手动控制从Classic到JetUI模式和返回通过设置 jetui.customization.method到Classic: server或者JetUI: ajax.
jetui.customization.method=ajax

此外,您可以设置默认的管道,虽然这不是必需的但是如果你直接击中了JetUI管道通过解决所有url与/jetspeed/ui代替/jetspeed/portal
pipeline.default = jetui-pipeline

最后,如果您想为/jetspeed/portal去JetUI管道就改变pipelines.xml管道映射bean:
        <entry key='/portal'>
          <value>jetui-pipeline</value>
        </entry>

Jetspeed空间

如果您将部署一个JetUI网站,重要的是要理解空间是如何配置的。空间是一个顶级组织的Jetspeed网站。您可以使用空间组织或团体项目或团队到一个共同的地方。

空间有很多共同点与文件夹,他们支持所有文件夹的功能和元数据。就像文件夹,空间可以有特定的安全约束他们。有两种管理工具用于管理空间: 空间管理器和空间导航器。空间管理器允许您维护空间,例如,如果你想添加或修改一个空间,使用空间管理器。

配置一个空间和一两个例外,空间只能是顶级文件夹。您可以配置您的空间通过编辑 folder.metadata文件的任何空间。在一个folder.metadata文件的任何顶级目录,你可以把这种文件夹空间通过增加 space-owner数据源属性:
<metadata name='space-owner' xml:lang='en'>admin</metadata>
 

一旦您已经添加了这个单一的权限,这个文件夹将被提升从一个普通的文件夹到一个空间。您还可以使用空间管理器创建空间。有两种其他类型的空间:
  •  默认的或公共空间
  • 用户空间,每个用户有自己的空间
公共空间是真正的根目录的Jetspeed网站。它有一个安全约束 public-view,这意味着只有管理员可以编辑它,所有其他用户可以查看公共空间。公共空间是很重要的,在这里可以设置元数据,是继承了所有其他的空间和系统中的文件夹。例如,在 folder.metadata文件的根公共空间。你可以设置默认的安全政策的主题或整个网站,当然空间可以覆盖这些设置。

每一个用户都有自己的空间。用户空间位于 /_user/{username}文件夹。用户名通常是设定的space-owner在space-owner元数据标签。

当一个新用户被添加到系统,就会为该用户创建一个空间,和copy模版里面的内容到新用户创建的空间文件夹中,你可以配置创建新用户的模版 /_template/new-user文件夹。在这里你会找到一个folder.metadata文件,连同其他几个页面文件复制到新创建的用户所属空间中,元数据标签的空间拥有者自动添加到folder-metadata。此外,某些正则表达式规则用于构建菜单来回的Jetspeed页面导航器。下面的正则表达式是默认的,而且它讲述了菜单的页面导航器显示页面和文件夹在当前目录,以及所有的链接在home space的用户。
 
<menu name="space-navigations" regexp="true" options="+/*/,+/*.psml" depth="-1"/>
  <menu name="space-links" regexp="true" options="+/*.link"/>


还有一个模板,用于创建新空间。这个模板下找到 /_template/space.在这里您可以配置默认的页面、链接和安全约束用于创建一个新的空间。随意修改文件,或添加更多的页面在用户和空间模板中发现的/_template到你的系统中。

未来的方向——空间

空间也支持一个额外的内容的组织称为环境。环境是一个集合的空间。JetUI目前不支持环境管理。空间被引进到Jetspeed与版本2.2.1,连同JetUI。未来版本的Jetspeed会支持全域映射到空间。域映射将使用例像白色标签门户,在不同的url映射到不同的空间或环境。在一个即将发布,Jetspeed将支持多域安全。这意味着您可以设置一个域的用户,并将这些用户提供一个域和组空间。

空间导航器

空间导航器是一种特殊的导航portlet让用户快速访问空间。从空间导航器,您可以导航到任何空间的系统,并且安全访问视图,空间。此外,从空间导航器,管理员可以编辑当前空间,以及创建一个新的空间。空间导航器使用两个新功能实现了JetUI:页面模板和超然的portlet。为了空间导航器出现在每一页的系统,我们已经配置了空间导航器的根文件夹命名template.tpsml的页面模板。因为这个portlet定义在系统范围的页面模板,它将会自动地出现在系统中每一页,允许你的用户常常接触到空间导航。
<fragment id="jsSpaceNavigator" type="portlet" name="j2-admin::SpaceNavigator" decorator='clear'>
            <property name="y" value="300"></property>
            <property name="x" value="20"></property>            
            <property name="state" value="detach"></property>                        
    </fragment>

此外,空间导航器是一个分离的portlet。JetUI引入了一个新的特殊的属性到fragments中名为 state.我们将此属性设置为值 detach.如果一个portlet是分离的,它并不仅限于流动布局控制大多数门户页面。相反,它可以被放置在一个页面上的特定区域。看到 x和y属性,用于定位portlet在具体地点在页眉区域。独立式portlet还可以拖,搬来搬去。然而,我们不希望portlet需要移动,所以我们使用一个 cleardecorator,这意味着portlet没有标题栏。因为JetUI拖沓,portlet标题栏的下降,如果我们使用一个 cleardecorator,portlet不能移动。

url映射

在经典的Jetspeed、url映射使用了Jetspeed分析器。这个分析器使用一组强大的规则来定位一个页面,基于运行时参数如语言,国家代码或媒体类型。当分析器是强大的,它也是复杂的配置。通过不使用分析器JetUI简化了URL映射。这意味着一个url直接映射到逻辑文件夹或页面的Jetspeed网站。 JetUI不支持子网站,因为子网站是由配置文件的规则控制的。

拖拽的portlet

通过单击其标题栏portlet可以移动在页面中,将鼠标向下,和拖动portlet页面上的另一个位置。默认情况下,你只能通过他们的标题栏拖portlet。有两种模式的拖拽:

  • 流控制拖拽
  • z顺序拖拽
流控制拖拽,portlet将永远留在行和列。如果你拖过另一个portlet,portlet将转向了为了使空间放置拖拽后的portlet。z顺序拖拽只能当一个portlet是分离的。究竟在哪儿你拖动portlet和删除它,这就是portlet停留。portlet可以重叠的拖其他portlet。最后拖portlet时,最高的z值,这意味着它将停留在顶部的所有其他portlet,直到一个新的portlet被选中(通过单击其标题栏)或移动。默认情况下,所有portlet使用流控制。你可以按detach按钮在portlet标题栏来分离portlet和把它放在z顺序拖拽方式。同样,按附加行动将portlet回到流控制拖拽方式。

有一个CSS样式jetspeed.properties来指示哪些div的门户是拖拽的部分。这个属性是 jetui.style.drag.handle它默认装饰风格命名是 .PTitle

对接工具栏

JetUI支持两种工具栏,一个停靠在左侧,和一个停靠在页面的右侧。这些工具栏都是可选的,但是从盒子里他们都配置为启用。在演示JetUI分布,我们已经把工具栏在系统范围的页面模板 template.tpsml,这意味着所有页面将默认情况下显示工具栏。你可以很容易地配置页面模板没有工具栏,或者只有一个工具栏,通过编辑template.tpsml文件并删除两个片段定义。按照惯例这个片段定义必须使用一个特殊的fragment id。对于左边栏,fragment id必须jstbLeft。为正确的工具栏,fragment id必须jstbLeft,如果这些fragments没有找到一个页面上,工具栏将不会显示。

   <fragment id="jstbLeft" type="layout" name="jetspeed-layouts::VelocityOneColumn">
        <property name="row" value="0"></property>
        <property name="column" value="0"></property>
	    <property name="state" value="normal"></property>
	    <property name='toolbar' value='true'></property>                                
	    <property name='class' value='jsLeftToolbar'></property>                                
	    <fragment id="jsPageNavigator" type="portlet" name="j2-admin::PageNavigator">
	  	        <property name="row" value="0"></property>
	            <property name="column" value="0"></property>
	            <property name="state" value="normal"></property>
	            <property name="tool" value="true"></property>                        
	    </fragment>
	</fragment>

注意在工具栏上有一个特殊的属性,工具栏是一个布局。它需要一个特殊的属性来表示,它是一个工具栏。这个属性是名副其实的 toolbar和被设置为true。一个工具栏片段有一个位置在页面上指定的 rowscolumn属性。这也是一个 state属性,这可以是 normalclosed。在顶部的工具栏有箭头按钮,它允许您隐藏或打开工具栏。这个state是坚持每个用户fragment的state属性。当工具栏是开放的时候state是normal,当是关闭的时候state是closed。最终一个工具栏有一个CSS类用于格式化布局。布局是一个列包含一个portlet的页面导航器,它会被标记为一个工具。当使用流控制拖拽工具不能降目标,在本例中只有一个portlet的工具栏。当然不止一个portlet可以放置在工具栏。

这是定义正确的工具栏,它持有的 Jetspeed Toolbox
   <fragment id="jstbRight" type="layout" name="jetspeed-layouts::VelocityOneColumn">
        <property name="row" value="0"></property>
        <property name="column" value="2"></property>    
	    <property name="state" value="normal"></property>                                
	    <property name='toolbar' value='true'></property>
        <property name="state" scope="user" scopeValue="guest" value="closed"></property>	    
	    <property name='class' value='jsRightToolbar'></property>                                
	    <fragment id="jsToolbox" type="portlet" name="j2-admin::JetspeedToolbox">
	            <property name="row" value="0"></property>
	            <property name="column" value="0"></property>
	            <property name="state" value="normal"></property>                        
	            <property name="tool" value="true"></property>	                                    
	    </fragment>
   </fragment>

分离和关闭portlet

JetUI引入了三个新的portlet窗口的行动:detach, attach and close。实际上detach 和 attach是相互切换的,一个portlet要么是detach要么是attach,它永远不可能两个同时存在。标题栏的图标解释:有X的代表close按钮,点击它将把该portlet从页面删除,其右边的按钮,用箭头连接到左边,是detach按钮。一旦一个portlet是分离的,detach按钮就变成了一个re-attach按钮,有着一个箭头连接到右边的分离一个portlet将portlet在z顺序拖拽方式,这意味着这些portlet总是保持着高水平的。通过按attach按钮,portlet被放回最近的一列中,回到流控制拖拽和渲染。这个detached state存储在fragment中,并且这些state是每个用户的基础。这x,y属性只跟当portlet是detached时有关。也注意到这个state在fragment中的名字是detach,此外有一个新的属性,名叫scope。下面你将看到x,y值的范围是user,与scopeValue设置为用户名admin,

每个用户都可以有自己的portlet定位定制的设置。正如您可以看到的,XML可能会变得非常庞大,包含很多用户。因此总是建议把psml和jetUI的一些信息存储到数据库。
  <fragment id="dp-22" type="portlet" name="j2-admin::ForgottenPasswordPortlet">
            <property name="row" value="1"></property>
            <property name="column" value="0"></property>
            <property name="x" scope="user" scopeValue="admin" value="536.0"></property>
            <property name="y" scope="user" scopeValue="admin" value="88.0"></property>
            <property name="width" scope="user" scopeValue="admin" value="1121.0"></property>
            <property name="height" scope="user" scopeValue="admin" value="120.0"></property>
            <property name="state" scope="user" scopeValue="admin" value="detach"></property>
            <property name="row" scope="user" scopeValue="admin" value="4"></property>
        </fragment>

这里是一个屏幕快照的一群portlet所有分离。正如您可以看到的,它就像一个桌面。所有的portlet都可以获得焦点得到当点击,去顶端的渲染页面的订单。

调整portlet

在那里你可以看到一个梯度图标,并将其拖走,让它更大,或向本身使portlet窗口小。 只有detached portlets可以调整大小。调整是比较容易做。只是抓住portlet的右下角,如果portlet是attached,梯度将是不可见的。当一个portlet的大小,两个新属性存储存储于fragment中,它们是 heightwidht。这就是Jetspeed商店的宽度和高度调整后的portlet。
注意, heightwitdth属性存储与 user的范围,和scopeValue用户的名称存储为 dave。每个用户都可以有自己的portlet窗口大小定制的设置。正如您可以看到的,XML可能会变得非常庞大,包含很多用户。因此建议总是存储在数据库中PSML与JetUI。

  <fragment id="dp-22" type="portlet" name="j2-admin::ForgottenPasswordPortlet">
...
            <property name="width" scope="user" scopeValue="dave" value="1121.0"></property>
            <property name="height" scope="user" scopeValue="dave" value="120.0"></property>
            <property name="state" scope="user" scopeValue="dave" value="detach"></property>
        </fragment>

jetspeed的Toolbox

jetspeed toolbox 是一个可停靠的portlet,为了让用户定制很容易的一次点击。这个toolbox可以停靠到左边或者右边的页面,或者它可以自由浮动在页面的顶部。他的toolbox包含三个面板让你快速访问添加portlet,改变布局,或改变主题:

  • Portlet选择器 
  • 布局  
  • 主题
Portlet选择器
      Portlet选择器是第一个选项卡。这个新特性使您快速访问的页面定制,允许您搜索portlet通过关键字或类别,然后通过一次点击添加到你的页面的portlet。第一个特性是您将看到的搜索功能的toolbox。你可以输入一个搜索字符串,和portlet选择器将返回一个列表匹配搜索标准的portlet。搜索是在完全索引portlet的元数据,如关键字和标题,在所有自动索引内容在portlet中注册。搜索索引是Lucene和Solr企业搜索引擎所支持。


此外,portlet可以分类和过滤基于类别(见下拉列表)。现在点击添加portlet可以不用离开页面就可以被定制,portlet也过滤的安全访问。只有portlet,可以配置为当前用户并显示在Jetspeed toolbox。或Portlet应用程序管理器,如下所示。记住当添加一个新的类别,给它一个新的类别名称前缀为 Keywords:、然后添加所有的关键词相关的类别在逗号分隔的列表在相应的值字段。当搜索引擎搜索在portlet内容,它将匹配关键字来搜索结果。属性名Categories也是比较重要的,不要忘了添加你的类别名称以逗号分隔的列表否则你的类别将不会显示。最后,行数的portlet显示在portlet选择器是由行属性。还有一个DefaultCategory属性,这是最初的类别显示在portlet选择器。

主题选择

选择当前页面的主题一样容易选择主题选项卡,然后单击主题。介绍了几种新的主题Jetspeed 2.2.1。主题仍然是实现页面的decorator,有一个用于扩展页面装饰器的文件decorator.properties。你可以找到页面的decorator Jetspeed webapp,在decorations/layout目录。
目前对于布局支持JetUI:Green Earth, Jetspeed, Purple Planet, and Turbo.为了使装饰出现在主题选择器,你将需要在decorator.properties文件中添加两个属性.

布局选择器
页面布局,选择从布局选项卡,允许最终用户能够定制页面的布局与一个点击。有四个布局方式:OneColumn, TwoColumn, ThreeColumn, and FourColumn.这个布局在JetUI目前仅限于这四个选择。将来我们希望能够进一步改进,你看到的图像存储在Jetspeed webapp目录的布局。

预览Portlet模式

Portlet选择器支持预览Portlet,Portlet选择器支持预览Portlet,以防你不想把该Portlet放到页面上那么之前就必须先看看它。有两种方法为一个portlet来支持预览。首先,portlet可以提供一个图像的portlet,并告诉了Jetspeed jetspeed-portlet.xml部署描述符portlet应用程序输入一个js:metadata给portlet,该名称属性设置为portlet.preview.image图像的路径是一个portlet应用程序相对路径预览图。

   <portlet id="WeatherPortlet">
        <portlet-name>WeatherPortlet</portlet-name>
        <js:metadata name="portlet.preview.image">/images/preview/weatherportlet.png</js:metadata>
    </portlet>
    <portlet id="GoogleMapsPortlet">
        <portlet-name>GoogleMapsPortlet</portlet-name>
        <js:metadata name="portlet.preview.image">/images/preview/googlemapsportlet.png</js:metadata>
    </portlet>

portlet还可以实现一个扩展的定制预览模式。这需要实际编码在portlet,以及下面的部署portlet中的元素在portlet.xml中portlet定义:
   <supports>
      <mime-type>text/html</mime-type>
...
      <portlet-mode>preview</portlet-mode>

此外,自定义portlet模式必须被声明为portlet应用程序
. ..   
  <custom-portlet-mode>
    <description>Custom Preview Mode</description>
    <portlet-mode>preview</portlet-mode>
  </custom-portlet-mode>


克隆portlet

从2.2.2版本的Jetspeed,portlet可以从Jetspeed toolbox克隆。克隆一个portlet创建一个实际的拷贝(克隆)的portlet的portlet注册表。当克隆一个portlet,最终向用户显示一个对话框用于输入不同的属性值克隆portlet。这个新特性是为了便于创建portlet的变化,而不需要剪切和粘贴在portlet . xml的定义。一个典型的用例可以是一个天气portlet如下所示。对于每个城市,最终用户可以创建克隆变体的基地天气portlet使用克隆对话框。他变化是基于属性,例如改变标题和城市。注意,您必须更改portlet的名称,或者你将不允许创建一个新的portlet。在一个Portlet应用程序Portlet名称必须是唯一的。注意,当重新部署portlet应用程序,portlet克隆不会被删除。克隆也可以创建和删除Portlet应用程序管理器


Jetspeed页面导航器

Jetspeed页面导航器支持终端用户导航和管理他们自己的空间,页面和文件夹。此外,手中的管理员,整个网站可以轻易地使用Jetspeed导航。视图的导航器是分成三个部分:

  • 上方部分显示了当前文件夹,它的所有内容
  • 一个可选的第二部分,显示在当前文件夹的链接
  • 第三部分为添加新页面,文件夹和链接
前两个部分实际上只是菜单,可以定制的。菜单是寻找在当前文件夹或空间folder.metadata。如果没有一个菜单定义,然后菜单导航器将搜索文件夹树来找到一个更高的定义菜单。对于空间,默认的菜单定义正则表达式:
 <menu name="space-navigations" regexp="true" options="+/*/,+/*.psml" depth="-1"/>
  <menu name="space-links" regexp="true" options="+/*.link"/>
Context Menus
所有的菜单选项有一个上下文菜单。上下文菜单只出现在hover near菜单选项的名字,出现一个向下的箭头。文件夹只有一个上下文菜单:Document Ordering。

在导航器菜单文档命令允许您更改订单的菜单选项(页面)。页面上下文菜单项有四个选项来管理页面:
  1. Rename
  2. Move
  3. Copy
  4. Delete
页面、文件夹和链接可以添加到当前文件夹或空间与Add按钮底部的导航器。添加一个页面,给它一个名称,选择一个模板,并按添加。

添加文件夹和链接的作品中添加页面一样。模板可以在模板选项是在portlet.xml的j2-admin程序中注册。
 <portlet-preferences>
      <preference>
        <name>defaultTemplatePage</name>
        <value>
          /_template/new-user/min.psml
        </value>
      </preference>
      <preference>
        <name>templatePages</name>
        <value>
          /_template/new-user/min.psml
          /_template/new-user/default-page.psml
        </value>
      </preference>
      <!-- If the following pref is blank, then the default admin role and admin user is used. -->
      <preference>
        <name>spaceAdminRoles</name>
        <value></value>
      </preference>
    </portlet-preferences>
模板还可以被配置在Portlet应用程序管理器

Extensions to PSML

PSML延长在版本2.2.1支持许多JetUI特性. PSML模板是一个新特性允许工具栏和空间导航器出现在所有页面而不需要声明portlet和为每个页面布局。相反,可以自动合并片段与任何页面使用页面模板或片段引用。碎片有两个新属性添加到支持多用户自定义属性的片段。
这两个属性是 scopescopeValue。一个支持的范围是user,在scopeValue设置为用户的名称。这允许为每个用户的片段定制。注意,如果很多用户开始定制片段,您可能想要在数据库中存储你的页面,而不是文件系统。 scopescopeValue可以结合任何片段属性,
包括新组属性下面描述的。
  <fragment id="dp-22" type="portlet" name="j2-admin::ForgottenPasswordPortlet">
...
            <property name="width" scope="user" scopeValue="dave" value="1121.0"></property>
            <property name="height" scope="user" scopeValue="dave" value="120.0"></property>
            <property name="state" scope="user" scopeValue="admin" value="detach"></property>
        </fragment>
新属性被添加到支持拖放,调整,分离,对接。这里是一些例子:
...
            <property name="y" value="300"></property>
            <property name="x" value="20"></property>            
            <property name="state" value="detach"></property>                        
...
	    <property name='toolbar' value='true'></property>
        <property name="state" scope="user" scopeValue="guest" value="closed"></property>	    
	    <property name='class' value='jsRightToolbar'></property>                                
	    <fragment id="jsToolbox" type="portlet" name="j2-admin::JetspeedToolbox">
	            <property name="row" value="0"></property>
	            <property name="column" value="0"></property>
	            <property name="state" value="normal"></property>                        
	            <property name="tool" value="true"></property>	                                    
	    </fragment>
...
propertyvaluesdescription
statenormal,detach,closed
这个窗口状态的一个片段,要么detached或attached(normal)或closed(对于一个用户或组用户)
toolbartrue,false这是片段工具栏
toolbartrue,false这是一个工具在一个工具栏片段?
xnumeric screen valuex位置的一个超然的detached portlet
ynumeric screen value
y位置的一个超然的detached portlet
widthnumeric screen value调整后的宽度,detached portlet
heightnumeric screen values调整后的高度,detached portlet
classa CSS class nameCSS样式应用于给定的片段


Jetspeed Properties Configurations

JetUI手动配置属性,WEB-INF/conf/jetspeed.properties (or WEB-INF/conf/override.properties)
这个开箱即用的 JetUI呈现JSP模板合并页面呈现
propertyvaluesdescription
jetui.customization.methodajax,server
使用JetUI定制引擎,设置为ajax。打开Jetspeed经典的渲染引擎,设置为server
jetui.render.engineCSRE,SSRE
JetUI渲染引擎来设置客户端或服务器端渲染引擎的渲染引擎。到2.2.2,只有SSRE是支持的
jetui.ajax.transportjson
运输对所有 REST API调用JetUI定制引擎。目前只支持JSON。
jetui.render.template/WEB-INF/jetui/yui/jetui.jsp
jetui.drag.modefull
截至2.2.2,只支持完整,sentire拖动窗口全尺寸,拖在其他portlet的目标。未来的支持将只需要一个小图标。
jetui.style.portlet.portal-layout-cell
CSS样式为JetUI portlet窗口,也用于识别和找到所有portlet
jetui.style.layout.portal-layout-column
CSS样式为JetUI布局窗口,也用于识别和找到所有布局容器
jetui.style.drag.handle.PTitleCSS样式为JetUI标题栏,也用作处理portlet窗口的拖放
pipeline.defaultjetspeed-pipeline
设置默认管道,尽管它是没有必要的,如果你直接击中了JetUI管道通过解决所有url与
 /jetspeed/ui 代替 /jetspeed/portal

JetUI管道配置

一个关键组件的jetspeed 2门户引擎是其请求的管道。所有的门户请求都会设置到spring 配置管道中,每个节点在管道流动称为阀。管道配置在 WEB-INF/assembly/pipelines.xml文件,看到 管道指南为更多的信息。JetUI配置的渲染引擎通过自己的管道在pipelines.xml。
寻找配置bean命名 jetui-pipeline.
<bean id="jetui-pipeline" class="org.apache.jetspeed.pipeline.JetspeedPipeline" init-method="initialize">
    <meta key="j2:cat" value="default" />
    <constructor-arg>
      <value>JetuiPipeline</value>
    </constructor-arg>
    <constructor-arg>
      <list>
        <ref bean="capabilityValve" />
        <ref bean="portalURLValve" />
        <ref bean="securityValve" />
...
        <ref bean="jetuiValve" />
        <ref bean="cleanUpValve" />
      </list>
    </constructor-arg>
  </bean>

您可能希望经典的管道是完全关闭。开箱即用的,它不是。获得/ jetspeed /portal去JetUI管道,改变pipelines.xml中属性pipeline-map的bean:
<bean id='pipeline-map' class='java.util.LinkedHashMap'>
    <meta key="j2:cat" value="default" />
    <constructor-arg>
      <map>
...
        <entry key='/portal'>
          <value>jetui-pipeline</value>
        </entry














大笑


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值