Convertir una aplicación web spring-web flow en portlet JSR-168

Crear el archivo portlet.xml

<portlet>
	<portlet-name>sample</portlet-name>
	<portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
	<supports>
		<mime-type>text/html</mime-type>
		<portlet-mode>view</portlet-mode>
	</supports>
	<portlet-info>
		<title>Sample Portlet</title>
	</portlet-info>
</portlet>

Modificar archivo web.xml

<servlet>
    <servlet-name>ViewRendererServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ViewRendererServlet</servlet-name>
    <url-pattern>/WEB-INF/servlet/view</url-pattern>
</servlet-mapping>

Añadir los beans controladores de spring web-flow

<bean id="portletModeControllerMapping" class="org.springframework.web.portlet.handler.PortletModeHandlerMapping">
<property name="portletModeMap">
<map>
<entry key="view" value-ref="flowController" />
</map>
</property>

<property name="interceptors">
<list>
<ref bean="authenticationPortletInterceptor"/>
</list>
</property>
</bean>

<bean id="flowController" class="org.springframework.webflow.executor.mvc.PortletFlowController">
<property name="flowExecutor" ref="flowExecutor" />
<property name="defaultFlowId" value="fwLogin" />
</bean>

<!-- Default View Resolver -->

<bean id="viewResolver" 
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="cache" value="true"/>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
<property name="contentType" value="text/html; charset=UTF-8"/>
</bean>

<!-- Creates the registry of flow definitions for this application -->
<flow:registry id="flowRegistry">
<flow:location path="/WEB-INF/context/flows/**/fw*.xml"/>
</flow:registry>

<!-- Launches new flow executions and resumes existing executions -->
<flow:executor id="flowExecutor" registry-ref="flowRegistry" repository-type="singlekey">
<flow:execution-attributes>
<!-- execution redirects don't apply in a Portlet environment -->

<flow:alwaysRedirectOnPause value="false"/>
</flow:execution-attributes>
</flow:executor>

Modificar las jsps

Cada enlace tendrá que construirse de la forma:

<portlet:renderURL var="mainUrl">
 <portlet:param name="_flowId" value="fwMain" /> 
</portlet:renderURL>

<a href="${mainUrl}">Texto del enlace </a>

Formularios:

<portlet:actionURL var="userSubmitUrl">
 <portlet:param name="_flowId" value="fwUserUpdate" />
 <portlet:param name="_flowExecutionKey" value="${flowExecutionKey}" />
</portlet:actionURL>

<form:form commandName="userUpdate" action="${userSubmitUrl}" method="post" acceptCharset="ISO-8859-1">
 <p>
  <label for="login"><spring:message code="user.update.form.field.login" /></label>
   <form:input cssClass="text" path="login" disabled="true"/>
 </p>
<input class="button" name="_eventId_insert" value="Value" />" type="submit"/>

Para más información consultar la documentación oficial de Spring MVC:

http://static.springsource.org/spring/docs/2.0.x/reference/portlet.html

Anuncios
Esta entrada fue publicada en mini-tutorial y etiquetada , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s