Apache Tiles - Error when upgrading from Struts2.3 to 2.5

1.1k Views Asked by At

While upgrading our application from struts 2.3 to 2.5, we are getting the following error.

package org.apache.tiles.request does not exist

This is the code we have modified for the executed method.

    package com.myeg.ins.web.control.helper;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.tiles.Attribute;
import org.apache.tiles.AttributeContext;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.context.TilesRequestContextHolder;
import org.apache.tiles.preparer.PreparerException;
import org.apache.tiles.preparer.ViewPreparer;
import org.apache.tiles.request.Request;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MenuPreparer implements ViewPreparer 
{
    HttpServletRequest request = ServletActionContext.getRequest();
    HttpSession session = request.getSession();
    protected Logger logger = LoggerFactory.getLogger(this.getClass());
    TilesContainer tileContainer = TilesAccess.getCurrentContainer((Request) request);
    /*-----previous code while using tiles 2.0
    public void execute(TilesRequestContext tilesContext, AttributeContext attributeContext) throws PreparerException 
    {
        String ins=(String)session.getAttribute("insComp");
        logger.info("In Preparer Ins company is::::::"+ins);
        attributeContext.putAttribute("breadcrumbshead", new Attribute(ins));

    }*/
    @Override
    public void execute(Request tileContainer, AttributeContext attributeContext) {
        // TODO Auto-generated method stub

        String ins=(String)session.getAttribute("insComp");
        logger.info("In Preparer Ins company is::::::"+ins);
        attributeContext.putAttribute("breadcrumbshead", new Attribute(ins));
    }
}
1

There are 1 best solutions below

0
Ignacio Alorre On

I have never worked with Apache Tile, but since the error is:

package org.apache.tiles.request does not exist

And since it happened after the update you mentioned. It seems to me you should add a new version for org.apache.tiles.request.

If you are using maven to build your app, you should change in the pom.xml the depency to this one:

<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-tiles3-plugin</artifactId>
  <version>${version.tiles}</version>
  <scope>compile</scope>
</dependency>

You can read more about this in the following link:

https://struts.apache.org/docs/tiles-3-plugin.html