Liferay研究之二:引入Spring
来源:互联网 发布:电视剧网络点击率排行 编辑:程序博客网 时间:2024/05/29 04:16
首先Suppose你已经搭建好了ext环境。
1、在Ext/ext-web/docroot/WEB-INF/web.xml中引入spring
<description>Spring Portlet sample application</description>
<!--
- Location of the XML file that defines the root application context.
- Applied by ContextLoaderServlet.
-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/context/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>view-servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>view-servlet</servlet-name>
<url-pattern>/WEB-INF/servlet/view</url-pattern>
</servlet-mapping>
2、在/WEB-INF/下建立一个目录(当然也可以不建)context,并在其下建立一个文件applicationContext.xml,配置spring的缺省行为,如下所示:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- This interceptor forwards the mapping request parameter from an ActionRequest to be used as a render parameter. -->
<bean id="parameterMappingInterceptor" class="org.springframework.web.portlet.handler.ParameterMappingInterceptor"/>
<!-- Abstract Default ExceptionHandler -->
<bean id="defaultExceptionHandlerTemplate" class="org.springframework.web.portlet.handler.SimpleMappingExceptionResolver" abstract="true">
<property name="defaultErrorView" value="error"/>
<property name="exceptionMappings">
<props>
<prop key="javax.portlet.PortletSecurityException">unauthorized</prop>
<prop key="javax.portlet.UnavailableException">unavailable</prop>
</props>
</property>
</bean>
3、编写一个Spring Portlet。 在ext-impl/新建一个Class,目录自选,命名为HelloWorldPortlet, 该类继承于GenericPortlet。
public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException ...{
System.out.println("Entering HelloWorldPortlet.doView");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>Hello World</h1>");
out.println("<p>This portlet demonstrates how to delegate to "+
"an existing JSR-168 portlet via a HandlerAdapter</p>");
out.println("<p>Portlet Name: " + this.getPortletName() + "</p>");
out.println("<p>Init Parameters:</p><ul>");
for (Enumeration e = this.getInitParameterNames(); e.hasMoreElements();) ...{
String name = (String)e.nextElement();
out.println("<li>" + name + " = " + this.getInitParameter(name) + "</li>");
}
out.println("</ul>");
}
}
4、编写HelloWorldPortlet对应的Spring bean配置。在context目录下建立一个helloworld.xml,并配置其内容如下:
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="helloWorldPortlet" class="org.springframework.web.portlet.mvc.PortletWrappingController">
<property name="portletClass">
<value>com.ext.portlet.helloworld.HelloWorldPortlet</value>
</property>
<property name="useSharedPortletConfig">
<value>false</value>
</property>
<property name="portletName">
<value>wrapped-hello-world</value>
</property>
<property name="initParameters">
<props>
<prop key="HarryPotter">The magic property</prop>
<prop key="JerrySeinfeld">The funny property</prop>
</props>
</property>
</bean>
<!-- Handler Mapping -->
<bean id="portletModeHandlerMapping" class="org.springframework.web.portlet.handler.PortletModeHandlerMapping">
<property name="portletModeMap">
<map>
<entry key="view"><ref bean="helloWorldPortlet"/></entry>
</map>
</property>
</bean>
<!-- Exceptions Handler -->
<bean id="defaultExceptionHandler" parent="defaultExceptionHandlerTemplate"/>
</beans>
注意,此处需要配置一个缺省的handler.
5、至此,一个Spring Portlet就开发好了,剩下的,就是需要将其配置成为一个Liferay的Portlet,具体步骤如下:
6、先在portlet-ext.xml中定义Portlet:
<portlet-name>helloworld</portlet-name>
<portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
<init-param>
<name>contextConfigLocation</name>
<value>/WEB-INF/context/helloworld.xml</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<portlet-info>
<title>Hello World</title>
</portlet-info>
</portlet>
注意,上面加粗部分显示了liferay如何将spring bean定义配置文件导入的。有一些文章介绍需要在portal-ext.properties中配置,可能是版本升级了,在我测试过程中,没有用那种方式。
7、然后在将其定义给Liferay,在liferay-portlet-ext.xml中定义:
<portlet>
<portlet-name>helloworld</portlet-name>
</portlet>
8、将其显示到Add Content列表中。 在liferay-display.xml中定义:
<category name="category.sample">
<portlet id="helloworld" />
</category>
至此,Spring Portlet开发完成。最后,还需要将spring-portlet.jar拷贝到classpath中。OK, ant deploy→login→add content→sample.helloworld。
打完,收工!
- Liferay研究之二:引入Spring
- Liferay研究之二:引入Spring
- Liferay研究之二十:如何防止连续重复提交
- Liferay研究之廿二:怪异的updateUser(user)方法
- Liferay Portal额外研究(二):对Liferay进行瘦身
- Liferay Portal额外研究(二):对Liferay进行瘦身
- Liferay研究之卅二: ext 开发环境下遇到java.lang.VerifyError问题
- Liferay研究之五:Liferay的MDA开发模式
- Liferay研究之六:Liferay技巧几则
- Liferay研究之廿一:Liferay集成Jbpm
- liferay 处理流程之二
- liferay学习之二:实例
- Liferay研究之九:开发技巧(2)
- Liferay研究之十:定制Portlet风格
- Liferay研究之十三:使用WebDAV
- Liferay研究之十八:Page Rendering
- Spring(之二)--深入研究
- 研究:Liferay研究(二)开发Liferay中几个常用的标签
- 廉价货币的“新政”
- dlmalloc的内存分配策略
- Visual Web Developer 2005中文版下载地址
- WINDOWS下配置PHP
- 從第一大PC廠商的網站看用戶自助服務
- Liferay研究之二:引入Spring
- 完全用Linux工作,摈弃Windows
- 花了一天时间把ouspec的javaeye博客看完
- 废除金本位:银行家赋予罗斯福的历史使命
- 【转载】超文本传输协议HTTP/1.1解释
- 层与层之间关系
- asp.net mvc中的路径选择
- js取出表格的行号列号和值
- WebSphere服务器 启动和停止 命令详解