当前位置导航:炫浪网>>网络学院>>网页制作>>JSP教程

应用JSF、Ajax和Seam开发Portlets(1)

    如果你刚开始考虑应用portal解决方案,或者想了解把一个新的或现有的JSF应用整合进一个portal环境有多容易,那么本文绝对值得你仔细研读。

    在过去几年中,portals无论是在企业还是在增强的portlet 2.0(JSR 286)规范中都得到了长足发展。新2.0版本的portlets在聚合不同的应用,并将其呈现在同一个页面的不同窗口方面赋于开发人员很大的自由。此外,它还提供了认证功能,成熟的个性化特性和更好的处理AJAX的现成方法。

    JSR 301 portlet桥接规范(portlet bridge specification)的出现,使我们具备了运行JSF应用的标准方式,不论portlets版本是1.0还是2.0.portlet桥(bridge)可以支配portal的Action/Render范式适当地处理JSF的生命周期。本教程将主要向你展示配置与开发JSF portlet是多么容易的一件事情,同时还会介绍新的JBoss Portlet Container 2.0及其一些很酷的新特性。

    本文是由三部分组成的系列文章的第一篇。该系列文章从基本的JSF portlet和portal知识一直讲到portlet环境中的AJAX和Seam的高级用法。

    现在准备开始吧!

    项目安装

    开发工具:

    要想成功实践文中的范例就要下载最新版本的Maven(我用的是2.0.9版本)。
    安装 Maven 2.0.9+
    设置 Maven二进制版本的环境变量

    例子中用到的服务器和二进制版本:

    JBoss Portal’s Portlet Container 2.0
    JBoss Portlet Bridge Beta3

    目前,JBoss Portlet Bridge是JSR 301规范的唯一实现,它允许你运行JSF、RichFaces和Seam的任意组合。你项目的Maven配置可安排下载打包在一起的JBoss AS和JBoss Portlet Container 2.0,如果你想分别下载它们,可以在此处找到这些文件。否则,就给Maven几分钟让它去自行下载适当的文件。

    注意——在当前的2.6.5.SP1版本的JBoss Portal中同样可以运行这个portlet ,我在本文中使用了JBoss Portlet Container 2.0,但是桥(bridge)在两者中都能工作。你可通过此处了解令其可在任意版本的JBoss Portal中运行的配置方法。

    下述Maven原型(Maven archetype)是创建项目的一种简易方式,可以快速建立并运行一个启始项目(或者模板项目)。一旦你运行了这些命令,就可获得实践本文示例所需的一切文件。

    打开一个终端窗口并运行如下指令:

mvn archetype:generate -DarchetypeGroupId=org.jboss.portletbridge.archetypes
 -DarchetypeArtifactId=1.2-basic
 -DarchetypeVersion=1.0.0.B3 -DgroupId=org.whatever.project -DartifactId=myprojectname
 -DarchetypeRepository=http://repository.jboss.org/maven2/ -Dversion=1.0.0.B3

    现在,找到你的新建项目所在文件目录(如果你使用的跟上面的例子一样,那么目录名就应该是 “myprojectname”),浏览其中刚刚创建的所有文件,你将会看到一个基本Maven文件结构,其中带有适用于本文范例的源码。现在你就可以打开最喜欢的IDE环境,引入这个Maven项目了。

    Portlet桥配置要求

    从现在开始的开发过程更像是在Servlet世界中开发JSF应用,不同之处在于:处理类似单点登录这样的问题;诸如命名空间(namespacing)这样的需要portletContext 和访问变量的问题;以及portlet中像“Help”和“Edit”这样的窗口模式问题。我不想在本文讲述过多portlet的细节,但我会提供进行基本开发的必要信息。如果你想了解更多portlets的信息,请参考JSR 168JSR 286规范说明。

    JBoss Portlet Bridge比较酷的一点在于它不是一个portlet,它只是portlet和JSF之间的媒介。而你的JSF应用则是个portlet,不过除了 WEB-INF目录下3到4个额外的xml文件和关于bridge的Jar包外,它的其余部分与你的Servlet版本的应用毫无二致。下面几个配置文件是主要区别:

    portlet.xml

<portlet>
       ...v       <portlet-class>
          javax.portlet.faces.GenericFacesPortlet
       </portlet-class>
       <init-param>
          <name>javax.portlet.faces.defaultViewId.view</name>
          <value>/home.xhtml</value>
       </init-param>
       <init-param>
          <name>javax.portlet.faces.defaultViewId.edit</name>
          <value>/jsf/edit.xhtml</value>
       </init-param>
       <init-param>
          <name>javax.portlet.faces.defaultViewId.help</name>
          <value>/jsf/help.xhtml</value>
       </init-param>
       ...
 </portlet>

    web.xml

<context-param>
       <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
       <param-value>
          org.jboss.portletbridge.application.FaceletPortletViewHandler
       </param-value>
    </context-param>
    <context-param>
         <param-name>javax.portlet.faces.renderPolicy</param-name>
         <param-value>
             ALWAYS_DELEGATE
         </param-value>
  </context-param>

    faces-config.xml

 <application>
      <view-handler>
          org.jboss.portletbridge.application.PortletViewHandler
      </view-handler>
      <state-manager>org.jboss.portletbridge.application.PortletStateManager</state-manager>
</application>

    由于上述设置已经应用在你刚刚设定的Maven原型中,因此现在我们就可以编译项目,并在JBoss Portal上部署它了。

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接