|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前些天,在CSDN上看到了一个消息,说是net网页编程网页编程AJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。在第一部分中,我们先容了JSFportlet运转的基本常识,包含工程创立、三个基础的XML设置文件和一些通用的JSFPortlet开辟职员常常碰到的成绩息争答。如今,我会解说怎样经由过程RichFaces组件库利用AJAX来加强你的JSFportlet。
工程搭建
开辟工具:
为了与本文坚持分歧,请下载最新版本的Maven(我利用2.0.9)。
安装Maven2.0.9或更高版本
设置Maven体系情况变量
典范中利用的服务器和二进制实行文件:
JBossPortal2.7Beta1
JBossPortletBridgeBeta3
在本文第一部分中,我曾注释过Mavenarchetypes的用法,和你想要- <context-param><param-name>org.richfaces.LoadStyleStrategy</param-name><param-value>NONE</param-value></context-param><context-param><param-name>org.richfaces.LoadScriptStrategy</param-name><param-value>NONE</param-value></context-param><context-param><param-name>org.ajax4jsf.RESOURCE_URI_PREFIX</param-name><param-value>rfRes</param-value></context-param><filter><display-name>Ajax4jsfFilter</display-name><filter-name>ajax4jsf</filter-name><filter-class>org.ajax4jsf.Filter</filter-class></filter><filter-mapping><filter-name>ajax4jsf</filter-name><servlet-name>FacesServlet</servlet-name><dispatcher>FORWARD</dispatcher><dispatcher>REQUEST</dispatcher><dispatcher>INCLUDE</dispatcher></filter-mapping>
复制代码 搭建的工程是怎样主动部署到运转着JBossPortal的JBoss使用服务器上的。为了便于利用,第二部分的前几节与第一部分是不异的。独一的修正是工程名字——一切的Maven命令坚持稳定。一旦你的RichFaces创立乐成,你会取得一个实援用和测试情况来实验上面的代码示例。
如今让我们天生RichFaces工程、反省源代码和疾速进修一下设置。最初,我们将运转demo,并研讨一些实在天下的开辟义务。
启动一个终端并运转以下命令:- mvnarchetype:generate-DarchetypeGroupId=org.jboss.portletbridge.archetypes-DarchetypeArtifactId=richfaces-basic-DarchetypeVersion=1.0.0.B3-DgroupId=org.my.project-DartifactId=richfacesproject-DarchetypeRepository=http://repository.jboss.org/maven2/-Dversion=1.0.0.B3
复制代码 翻开工程地点目次,假如你利用以上命令,目次名应当是“richfacesproject”。复杂扫瞄一下目次的文件布局,你会看到Maven文件夹下本示例的源代码。如今你能够启动你喜好的IDE并导进Maven工程了。
设置
利用RichFaces库的任何组件前,必需对XML文件做一下小修改。这些设置只是对第一部分华夏来的设置的一些扩大,以是我在这里只说起针对JBossPortletBridge的JSF相干的设置。上面的设置请依据您团体的必要选择。为了使本文的重点会合于AJAXportlet开辟,我只会复杂先容一下这些选项怎样影响你的portlet。更多信息请检察RichFaces文档的相干章节。
web.xml
--------------
本文件能够把持用于显现RichFaces的剧本和CSS款式表。关于JBossPortal,我们能够封闭款式表和剧本的加载,如许它们在portal页面头部只会加载一次:- <context-param><param-name>org.richfaces.LoadStyleStrategy</param-name><param-value>NONE</param-value></context-param><context-param><param-name>org.richfaces.LoadScriptStrategy</param-name><param-value>NONE</param-value></context-param><context-param><param-name>org.ajax4jsf.RESOURCE_URI_PREFIX</param-name><param-value>rfRes</param-value></context-param><filter><display-name>Ajax4jsfFilter</display-name><filter-name>ajax4jsf</filter-name><filter-class>org.ajax4jsf.Filter</filter-class></filter><filter-mapping><filter-name>ajax4jsf</filter-name><servlet-name>FacesServlet</servlet-name><dispatcher>FORWARD</dispatcher><dispatcher>REQUEST</dispatcher><dispatcher>INCLUDE</dispatcher></filter-mapping>
复制代码 jboss-portlet.xml
--------------
在这里你能够指定在portal页面头部会加载哪些内容。正如你所看到的,“rfRes”在web.xml中被设为RESOURCE_URI_PREFIX。下一步是拔出servlet_path/RESOURCE_URI_PREFIX来会见经由过程classpath猎取的RichFaces资本。
还必要设置三个文件以准确显现和利用RichFaces组件包:- <portlet><portlet-name>ajaxPortlet</portlet-name><header-content><scriptsrc="/faces/rfRes/org/ajax4jsf/framework.pack.js"type="text/javascript"></script><scriptsrc="/faces/rfRes/org/richfaces/ui.pack.js"type="text/javascript"></script><linkrel="stylesheet"type="text/css"href="/faces/rfRes/org/richfaces/skin.xcss"/></header-content></portlet>
复制代码 运转Demo
如今我们启动服务器并经由过程两个复杂的命令部署你的RichFacesportlet。在入手下手之前,我想指出在JBossPortal安装上,本文和第一部分的区分。在上一期文章中,我们是部署到能够运转轻量级的PortletContainer2.0示例的JBoss使用服务器上。上期文章宣布今后,JBossPortal2.7beta版公布。它交融了JBossPortal旧的JSR-168完成和新的Portlet2.0完成,使我们可以在尺度的JBossPortal工程中同时运转1.0和2.0portlets。以是请不要对你应当利用哪一个版本感应狐疑。只需记着JBossPortal2.7包括了我们必要的统统内容,而2.6.x版本是撑持JSR-168(portlet1.0)的不乱版本便可。
更多关于部署本demoportlet到JBossPortal各类版本(beta或不乱版)的信息,请浏览这里。
第一步:下载并启动服务器
从http://downloads.sourceforge.net/jboss/jboss-portal-2.7.0.B1-bundled.zip下载集成了JBossPortal2.7Beta1的JBoss使用服务器。然后将以下命令中的path_to_bundle_zip以JBossPortal2.7的相对路径交换并运转:- mvninstallcargo:start-Plocal-portal-DJBOSS_ZIP_HOME=/path_to_bundle_zip/jboss-portal-2.7.0.B1-bundled.zip-DJBOSS_HOME_DIR=jboss-portal-2.7.0.B1-bundled/jboss-portal-2.7.0.B1
复制代码 该命令有点长,不外可让你打包任何兼容的JBossAppServer和JBossPortal版本。
假如你看到以下输入,则能够举行下一步了:
<br>
第二步:部署demo使用
如今翻开另外一个终端窗口,进进“richfacesproject”根目次,运转以下命令:- mvncargo:deploy-Plocal-portal-DJBOSS_ZIP_HOME=/path_to_bundle_zip/jboss-portal-2.7.0.B1-bundled.zip-DJBOSS_HOME_DIR=jboss-portal-2.7.0.B1-bundled/jboss-portal-2.7.0.B1
复制代码 不要健忘把“path_to_bundle_zip”交换成准确的路径。
如今你能够经由过程http://localhost:8080/portal/portal/default/RichFacesEchoPortlet会见RichFacesdemoportlet了。
<br>
RichFacesPortlet开辟
当经由过程portlet举行AJAX哀求时,必需分明portlet和servlet在session之间的区分。比方,当用户在portlet外部利用AJAX哀求时,这是经由过程原始的HTTPsession完成的,哀求没法会见存储在portalsession中的对象。针对这个成绩,我们完成了一种办法来同意我们会见Portalsession属性。它们经由过程窗口ID来区分感化域,比方,假如Portlet在session中存储值“YourObject”,那末就能够经由过程“javax.portlet.p.XYZ?YourObject”来会见,个中XYZ是窗口ID。
你能够经由过程以下命令从UI中猎取windowID大概scopeID:- #{facesContext.externalContext.sessionMap["org.jboss.portletbridge.WINDOW_ID_RETRIVER"].windowID}#{facesContext.externalContext.sessionMap["org.jboss.portletbridge.WINDOW_ID_RETRIVER"].scopeId}
复制代码 正如你看到的,facesContext.externalContext.sessionMap指向的是portlet感化域内的session对象。为何你会必要利用到这些值呢?上面枚举到了一些你大概会碰到的情形:
- 当你在AJAX哀求时必要来自portalsession的认证数据时
- 静态资本天生时(图片、剧本等等)
其他例子
全部RichFaces库都能够经由过程一个运转的demo看到,源代码能够在这里下载。假如你对组件设置不断定大概你以为没法在portal情况中运转,那末本工程对你十分有匡助。这个demo中独一短少的组件是文件上传组件。该组件企图在玄月初的下一个porletbridge版本中供应。
<br>
在论坛上宣布反应是非常有效和受接待的。假如想要懂得JBossPortletBridge项目标更多信息,请会见项目网站,文档库大概wiki。
检察英文原文:DevelopingPortletsusingJSF,Ajax,andSeam(Part2of3)。
相干浏览:使用JSF、Ajax和Seam开辟Portlets(1/3)。
本文出自:http://www.infoq.com/cn/articles/jsf-ajax-seam-portlets-pt-2
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 |
|