- 浏览: 531807 次
- 性别:
- 来自: 山东济南
文章分类
最新评论
-
dragon_8844:
非常不错,nice
java.util.concurrent 多线程框架 -
wusendong:
很好的文章!受益匪浅,谢谢!
java.util.concurrent 多线程框架 -
SINCE1978:
你也关注并发啊
java.util.concurrent 多线程框架 -
lku1314:
这个不错 刚刚找到这个组建 以前孤陋寡闻了 像lz学习!标 ...
quartz 在WEB中应用小结 -
lliiqiang:
人们对于目标需要的需求明确的去做,对于目标以外的因素是随机的执 ...
flex和后端的数据交互(一)--XML和HTTPService
liferay有自己的struts和spring扩展,有兴趣的朋友可以看一下它对spring的扩展和使用。这里说一下使用liferay的对struts框架的支持下的开发;我用的是struts1.*,liferay现在也有对struts2.*的支持桥,暂不讨论,以后用到的时候再说。
对于用惯了SSH开发的人来说,刚开始在liferay中使用struts还是有些不适应的,我的不适应来自于请求的发送。由于我使用的是集成了liferay环境的tomcat:liferay-portal-tomcat-5.5-5.1.2,所以有很多jar文件的冲突;
struts配置介绍:
先说一下配置文件的构造。在你自己的portlet下的WEB-INF中需要有这几个配置文件:liferay-display.xml,liferay-portlet.xml,portlet.xml,tiles-defs.xml,struts-config.xml,web.xml;我们一个一个的看看,哈!
web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>PortletActionServlet</servlet-name> <servlet-class> com.liferay.portal.struts.PortletActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>PortletActionServlet</servlet-name> <url-pattern>/portlet_action/*</url-pattern> </servlet-mapping> </web-app>
这里把对struts的action的请求都通过portlet用桥接做了处理后再交由struts自己的action进行处理;
再看struts-config.xml,这个和我们一般用的也没啥区别:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <action-mappings> <action path="/library/view" type="exam.ssha.webapp.action.GoodAction"> <forward name="library.view" path="library.view" /> </action> <action path="/library/edit_entry" type="exam.ssha.webapp.action.GoodAction"> <forward name="library.edit_entry" path="library.edit_entry" /> <forward name="library.view" path="library.view" /> </action> </action-mappings> <message-resources parameter="content.Language" /> <plug-in className="org.apache.struts.tiles.TilesPlugin"> <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> <set-property property="moduleAware" value="true" /> <set-property property="definitions-parser-validate" value="true" /> </plug-in> </struts-config>
处理后的跳转映射是在tiles-defs.xml中定义的:
<?xml version="1.0"?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd"> <tiles-definitions> <definition name="library.view" path="/library/view.jsp" /> <definition name="library.edit_entry" path="/library/edit_entry.jsp" /> </tiles-definitions>
这是portlet.xml:
<?xml version="1.0" encoding="UTF-8"?> <portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"> <portlet> <portlet-name>myExam</portlet-name> <display-name>MyExam</display-name> <portlet-class>com.liferay.portlet.StrutsPortlet</portlet-class> <init-param> <name>view-action</name> <value>/library/view</value> </init-param> <expiration-cache>0</expiration-cache> <supports> <mime-type>text/html</mime-type> </supports> <resource-bundle>content.Language</resource-bundle> <portlet-info> <title>MyExam</title> <short-title>MyExam</short-title> <keywords>myExam</keywords> </portlet-info> <security-role-ref> <role-name>user</role-name> </security-role-ref> </portlet> </portlet-app>
如果你看了前面关于portletl的介绍,这个也能很容易看懂,这个只是在启动参数上有区别,不用struts的时候是jsp页面,现在是struts的请求映射;
接下来是liferay-portlet.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 4.4.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_4_4_0.dtd"> <liferay-portlet-app> <portlet> <portlet-name>myExam</portlet-name> <struts-path>library</struts-path> <restore-current-view>false</restore-current-view> <header-portlet-css>/html/library/css.jsp</header-portlet-css> <header-portlet-javascript>/html/js/util.js</header-portlet-javascript> <css-class-wrapper>portlet-library</css-class-wrapper> </portlet> <role-mapper> <role-name>user</role-name> <role-link>User</role-link> </role-mapper> </liferay-portlet-app>
liferay-display.xml:
<?xml version="1.0"?> <!DOCTYPE display PUBLIC "-//Liferay//DTD Display 4.0.0//EN" "http://www.liferay.com/dtd/liferay-display_4_0_0.dtd"> <display> <category name="category.exam"> <portlet id="myExam" /> </category> </display>
注意id的对应就好了。
Spring配置:
我的spring配置文件放到了Classes_HOME/META-INF/下,有两个文件:init.properties和jdbcContext.xml;
用过spring的人一看都知道的,一个是数据源方面的属性配置文件,一个是数据源加载和各种bean的配置文件。
这是加载spring的配置文件的代码:
this.appContext = new ClassPathXmlApplicationContext( "/META-INF/jdbcContext.xml");
jar文件冲突
liferay本身的开发和运行环境提供了对struts和spring的支持,在集成了liferay的环境的tomcat中运行测试时难免会有jar文件的冲突;在你自己的项目lib目录中struts相关的jar文件是不能有的,还有就是liferay对spring做扩展了的一些jar也不能引入,有spring-core.jar spring-bean.jar;还有liferay本身就扩展了log4j的一些东西,你的lib中也不能有log4j的jar。当然这不是绝对的,这只是我测试多次以后发现的,根据不同的应用jar文件的引用应该根据具体需要来定,哈!这是我应用中的一个jar文件清单:
Struts中action
在使用liferay对struts扩展之后,action需要继承com.liferay.portal.struts.PortletAction类,这时Action中主要有两个方法:
public void processAction(ActionMapping mapping, ActionForm form, PortletConfig config, ActionRequest request, ActionResponse response) public ActionForward render(ActionMapping mapping, ActionForm form, PortletConfig config, RenderRequest request, RenderResponse response)
processAction方法只有当页面中是form的POST请求时才会调用,而render方法是所有请求都会调用,也就是说当时form的POST请求时是先调用processAction方法,之后调用render方法的。在processAction方法中用setForward(request, "url");方法设定跳转,在render方法中会生效的。
页面中的注意事项
开始时我在页面中使用jstl总是不起作用,还以为是liferay对jstl标签有什么限制,其实不然;页面中没有什么特别的,和一般我们的页面开发没有多少区别;不能使用jstl的原因是因为我做例子的时候是基于一个别人的例子做的,结果例子中web.xml配置的servlet是2.3版本,而我本身的jsp环境是2.0,使得在页面中无法应用表达式语言,把web.xml中的配置改为2.4就都OK了。还有一点是,portlet的页面不是一个完整的页面,所以html代码用到什么就写啥。
struts请求的发送,简便的方式还是只用标签,如:
<portlet:renderURL><portlet:param name="struts_action" value="/library/edit_entry"/></portlet:renderURL>
这里的参数名称struts_action就是标识着映射名称,如果你想在这个请求后面用js动态添加参数,直接<portlet:namespace />参数名=参数值 这样添加到这个请求后面就可以了。页面form中的每一项属性都需要用<portlet:namespace />区分,因为每一个portlet都是一个独立的web应用。
Ajax的使用
我试过用ajax向liferay的struts的action类发送请求,但是在action中不能正确返回xml数据,查了不少资料:一种说是,portlet中的数据返回只能是txt/html格式的,这个已经在配置文件中写死了,不能返回 txt/xml格式的数据;还有一种说是和liferay本身或者是portal本身的页面加载机制有关系。在com.liferay.portlet.documentlibrary.action下有一个GetFileAction类,这是一个文件下载的处理类,我试过里面的ServletResponseUtil中的几个方法,在客户端还是得不到xml数据;试了几种方式,返回的都是整个页面的html代码。最后我采用了不少人的建议,就是不使用action处理ajax请求,改用jsp或者servlet处理,这样发送请求的时候需要加上应用目录名称,指明具体的请求地址;或者使用单独的struts action处理,不使用portlet action。
如有疏漏或问题,欢迎回复交流,例子代码请发邮件索取。
评论
不知道这句话是什么意思?请指教
发表评论
-
ubuntu14.04下编译安装Tora
2015-08-11 16:19 1210需预先安装oracle客户端;以下类库,有的可能需要提前安 ... -
ubuntu14.04下oracle客户端最小化安装
2015-08-11 16:04 1058在Oracle官网下载Oracle Instant Clien ... -
ubuntu14.04下编译安装QT
2015-08-11 16:03 15051. 首先配置一些编译Qt ... -
55种开源可视化数据分析工具
2015-07-22 14:50 0http://mp.weixin.qq.com/s?__bi ... -
响应式设计理念
2013-09-29 10:00 0概念 响应式Web设计(Responsive Web desi ... -
Liferay 使用随笔
2010-04-19 14:18 01.如何根据权限去除每一个portlet中右上角的选项。 关于 ... -
Liferay中ajax应用用户session超时
2010-03-26 09:31 3920基于Liferay Portal开发ajax应用时,如果长时间 ... -
Liferay portlet实例化配置
2009-11-10 09:06 4375在默认的情况下,一个p ... -
带checkbox的dhtmlxtree菜单树异步加载时的问题解决
2009-10-24 11:27 5973最近一直很忙,自己负责几个模块的设计开发,还有和其他服务接口的 ... -
JS代码示例
2009-10-21 14:23 22821.数组操作时的push var a = [],b = [ ... -
dhtmlxtree异步加载时的一个bug修正
2009-09-15 10:00 3808前面已经对dhtmlx的东西有所介绍,使用中也发现了不少bug ... -
WEB Page to PDF
2009-06-17 11:10 2549现在有很多网页页面转换成PDF文档的支持项目,我使用的是pd4 ... -
Liferay中使用dhtmlxlayout在IE下的问题
2009-06-12 13:43 2098Liferay 中使用dhemtlx系列UI的时候,dhtml ... -
Liferay相关配置
2009-06-10 13:35 1259修改liferay中portlet的加载目录 前面 ... -
Spring JDBC对Oracle10g数据库操作时RowSet的问题
2009-05-19 08:56 3472使用Spring JDBC对Oracle10g进行数据库分页的 ... -
Dynamic Tables In JavaScript for IE and Firefox
2009-05-06 14:03 1713http://www.sweetvision.com/2007 ... -
liferay中对struts桥接处理后的response
2009-04-18 14:29 1837对于在liferay开发平台中 ... -
liferay开发小记---portlet文件构造
2009-04-03 17:09 3285书接上回,说说portlet的开发,每一个portlet就是对 ... -
liferay开发小记---开发环境的搭建
2009-04-02 13:42 3806用惯了MyEclipse,我的环境也是在它上面搭建的,试用过M ... -
跨域访问解决办法之java网络编程
2008-10-11 22:35 9202颓废了很长时间,还是心态问题! 项目中有不少地方需要跨域访 ...
相关推荐
本文将详述“liferay开发小记——开发环境的搭建”这一主题,旨在帮助开发者们快速有效地设置自己的开发环境,从而顺利进行Liferay插件或portlet的开发。 首先,我们需要了解Liferay开发的基础。Liferay提供了多种...
标题 "liferay-portal-sql-6.1.1-ce-ga2-20120731132656558" 暗示了这是一个关于Liferay Portal 6.1.1社区版(CE GA2)的SQL相关资源,发布日期为2012年7月31日。Liferay Portal是一个开源的企业级内容管理平台,它...
`liferay-eclipse`是Liferay为Eclipse IDE定制的插件,使得开发者能够在Eclipse环境中无缝地开发Liferay插件。这个插件提供了项目向导、自动构建支持、部署工具以及对Liferay API的智能感知等功能,极大地提高了开发...
本文将详细介绍“liferay-ide-eclipse-updatesite-1.6.2”这一更新站点及其相关知识点。 一、Liferay IDE Liferay IDE是由Liferay公司开发的,它是基于Eclipse平台的插件,专门用于简化Liferay Portal的开发工作。...
在IT行业中,Liferay IDE是一款专为Liferay Portal开发设计的强大工具,而"Liferay-ide-eclipse-updatesite-1.1.0.zip"正是这个工具的更新站点包,它提供了针对Liferay 6.0版本的定制化集成开发环境。Liferay IDE是...
liferay-portal-src-6.0.6-20110225.part2
总之,"liferay-faces-bridge-impl-3.0.0-ga1.zip"和"duckapter.zip"代表了Java开发领域中的两个关键点:portlet和JSF的集成以及静态语言中的鸭子类型实现。通过了解和使用这些工具,开发者能够更好地利用开源资源,...
- **Liferay Plugins SDK (Software Development Kit)**: 下载地址为[liferay-plugins-sdk-6.2(PluginsSDK)](https://sourceforge.net/projects/lportal/files/Liferay%20Portal/6.2.5%20GA6/)。这是开发portlet的...
《Liferay Developer Guide 6.0》是一本深入讲解Liferay Portal开发的指南,由Liferay公司官方发布,旨在帮助开发者充分利用Liferay平台构建企业级的Web应用。这本书详细介绍了如何利用Liferay的API、服务和插件进行...
SDK 提供了必要的工具和库,使得开发者能够遵循Liferay的开发规范,编写符合其架构的代码。 **1. 开发环境设置** 在开始使用Liferay 6.2 SDK之前,你需要配置Java开发环境,确保安装了JDK 1.7或更高版本,因为...
liferay集成struts2 spring hibernate的完整示例,下载后将项目放入lifeRay的SDK下的portalet 目录,然后在本地数据库中创建BOOK表(bookId、bookName、BookType),修改portal.properties中JDBC连接属性,在Eclipse...
Liferay Plugins SDK 5.1.2 是一个用于开发Liferay Portal插件的软件开发工具包,它为开发者提供了一套完整的框架和工具,以便于创建Portlets、Themes以及其他定制功能。Liferay Portal是一个开源的企业级内容管理和...
Liferay IDE Eclipse插件是专为开发者设计的一款强大的工具,旨在提升在Eclipse集成开发环境中的Liferay Portal项目开发效率。这款插件提供了丰富的特性,使得开发者能够在Eclipse内无缝地进行Liferay相关的代码调试...
【标题】"liferay-spring-portlet"是一个基于Spring框架构建的portlet应用,适用于Liferay门户平台。这个项目展示了如何将Spring与Liferay Portal结合,创建一个可直接部署到Liferay中的WAR包。作者提到他们已经花费...
Liferay Spring Portlet MVC 使用 Maven 的 Liferay Spring Portlet MVC 项目模板。 Liferay EE 6.2.10.11 (GA1, SP... $ cp target/liferay-spring-mvc-portlet.war $LIFERAY_HOME/deploy/ 配置 默认设置为 Liferay
这个“liferay-development-zh.rar”压缩包显然包含了关于Liferay开发的中文详细指南,特别适合那些希望在中国语境下学习和实践Liferay开发的个人或团队。本文将深入探讨Liferay开发的关键知识点,基于提供的...
liferay-portal-tomcat-5.5-5.1.1.part4.rar
liferay-portal-tomcat-5.5-5.1.1.part1.rar
liferay-portal-tomcat-5.5-5.1.1.part2.rar
liferay-portal-tomcat-5.5-5.1.1.part3.rar