Sounds like you have used the Open Session in View method... probably
provided by a custom interceptor, when adding the rest plugin you have
changed your action to the rest package and forgot to put your interceptor
back in place, so now you don't have a hibernate session and the view
generates this error.


On Mon, Feb 10, 2014 at 10:40 PM, Miguel <miguel...@gmail.com> wrote:

> Hi,
>
> A strange situation happens when I load *struts2-rest-plugin-2.3.16.jar*
> With out the REST plugin my action and jsp's works as always has worked.
> But with the mere inclusion of the REST Plugin, some jsp's stops finding
> variables, because the variable name changes.
> Here is the snippet:
>
> struts.xml
>
>     <constant name="struts.objectFactory"
> value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
>     <constant name="struts.objectFactory.spring.autoWire" value="name" />
>     <package name="proyectox" extends="json-default" >
> <!-- Si no le pones este stack, pues no funciona...-->
>         <interceptors>
>             <interceptor name="strutsSpring"
>
> class="com.proyectox.ui.interceptor.HibernateOpenSessionInViewInterceptor"/>
>             <interceptor name="viewuseragentselector"
> class="com.proyectox.ui.interceptor.UserAgentResultInterceptor"/>
>             <interceptor-stack name="strutsSpringPPPStack">
>                 <interceptor-ref name="strutsSpring"/>
>                 <interceptor-ref name="paramsPrepareParamsStack"/>
>                 <interceptor-ref name="viewuseragentselector"/>
>             </interceptor-stack>
>         </interceptors>
> ...
>     </package>
>
>     <package name="cfdi" extends="proyectox" namespace="/cfdi">
>         <action name="header_*" class="com.fcm.cfdi.ui.HeaderAction">
>             <result type="redirectAction">
>                 <param name="actionName">edit</param>
>             </result>
> <!--            <result >printHeader.jsp</result>-->
>             <result name="input">headerEdit.jsp</result>
>             <result name="error">/facturaerror.jsp</result>
>             <interceptor-ref name="scope">
>                 <param name="session">contribuyente</param>
>                 <param name="autoCreateSession">true</param>
>                 <param name="key">contribuyenteActual</param>
>             </interceptor-ref>
>             <interceptor-ref name="scope">
>                 <param name="session">factura</param>
>                 <param name="autoCreateSession">false</param>
>                 <param name="key">cfdi</param>
>             </interceptor-ref>
>             <interceptor-ref name="strutsSpringPPPStack"/>
>         </action>
>
>
>
> HeaderAction.java:
>
> public class HeaderAction extends ActionSupport implements Preparable {
>     protected Contribuyente contribuyente;
>     protected Long contribuyenteId;
>
>     public void prepare() throws Exception {
>     ...
>     }
>
>
>     public String input(){
>
>         dirReceptorId = factura.getDomicilioReceptor().getId();
>         dirEmisionId  = factura.getDomicilioEmision().getId();
>         return INPUT;
>     }
> ...
>     public Contribuyente getContribuyente() {
>         return contribuyente;
>     }
>
>     public void setContribuyente(Contribuyente contribuyente) {
>         this.contribuyente = contribuyente;
>     }
> ...
> }
>
> edit.jsp:
> ...
>     <s:select label="Direccion Emision"
>        name="dirEmisionId"
>        list="*contribuyente*.domicilios"
>        listKey="id"
>        listValue="nombre"
>        multiple="false"
>        size="1"
>        required="true"
>        key="factura.direccionEmision.id"
>     />
> ...
>
> After loading *struts2-rest-plugin-2.3.16.jar* it starts giving the
> following exception:
> Caused by: org.hibernate.LazyInitializationException: failed to lazily
> initialize a collection of role: *contribuyentes.domicilios*, no session or
> session was closed
> ...
>
> I know that's a Hibernate exception, but the jsp works fine without the
> REST Plugin.
> It's like the REST Plugin appends that extra "s" after the variable name in
> the .jsp or the value stack changes or something like that.
>
> The action is invoked without error in either case, and has into it's
> fields the required values.
>
>
> Does anyone has any pointer of what can be happening?
>
> Thanks
>
> Si quieres ser más positivo, pierde un electrón
> Miguel Ruiz Velasco Sobrino
>

Reply via email to