struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sridhar Reddy T (JIRA)" <j...@apache.org>
Subject [jira] Created: (WW-2682) Plugin not working in Portal environment
Date Tue, 17 Jun 2008 08:18:05 GMT
Plugin not working in Portal environment
----------------------------------------

                 Key: WW-2682
                 URL: https://issues.apache.org/struts/browse/WW-2682
             Project: Struts 2
          Issue Type: Bug
          Components: Plugin - Tiles
    Affects Versions: 2.0.11.1
         Environment: Struts 2.0.11.1, Tiles 2.0.6, Tiles Plugin 2.0.11.1
            Reporter: Sridhar Reddy T


When i try to use Tiles in Portlet environment using the above versions, it does not work.
 I have done some research and these are my findings.

( Step 1) CODE BASE - TILES PLUGIN 2.0.11.1

In org.apache.struts2.tiles.StrutsTilesRequestContext, this logic is such that it always calls
dispatch(), if mask is not ending with ".ftl".

 public void dispatch(String include) throws IOException {
    	if (include.endsWith(mask)) {
            // FIXME This way FreeMarker results still don't have a content-type!
    	    include(include);
        } else {
            super.dispatch(include);
        }
    }

( Step 2) CODE BASE - TILES 2.0.6

super.dispatch() in the above code calls org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch()

    public void dispatch(String path) throws IOException {
        if (response.isCommitted() || ServletUtil.isForceInclude(request)) {
            include(path);
        } else {
            forward(path);
        }
    }

Atleast above logic should have worked to call include(), if ServletUtil.isForceInclude(request)
returned true.
ServletUtil.isForceInclude(request) returns true if request.getAttribute(ServletUtil.FORCE_INCLUDE_ATTRIBUTE_NAME)
= =true.

( Step 3) CODE BASE - STRUTS 2.0.11.1

Call to org.apache.struts2.portlet.servlet.PortletServletRequestDispatcher.doForward() throws
IllegalStateException.

	public void forward(ServletRequest request, ServletResponse response) throws ServletException,
IOException {
		throw new IllegalStateException("Not allowed in a portlet");
		
	}

My guess is, forward() should not be called when the result is of type TilesResult. 

My guess is that  we need a fix in  Step 1.

EITHER 
        call super.include() instead of calling dispatch() 
OR
        request.setAttribute("org.apache.tiles.servlet.context.ServletTilesRequestContext.FORCE_INCLUDE",
new Boolean(true)) before calling super.dispatch().

Thanks,
Sridhar.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message