That doesnt work either.
The problem comes even if I take out the following lines from header.jsp
<tiles:importAttribute name="title" scope="page" />
and
<jsp:scriptlet>
System.out.println("ident = " + request.getParameter("title"));
</jsp:scriptlet>
After eliminating the abovel ines from my header, when I access any jsp
which uses header.jsp, I get the following error.
[ServletException in:/layouts/threeColumnLayout.jsp] Error - Illegal
class access :Class org.apache.struts.tiles.ComponentDefinition can not
access a
member of class com.usersmarts.sam.tilescontroller.TestTileController with
modifiers ""
-Fahd
-----Original Message-----
From: Pingili, Madhupal [mailto:[EMAIL PROTECTED]
Sent: Friday, July 16, 2004 6:29 PM
To: 'Struts Users Mailing List'
Subject: RE: how to use controllerclasses with tiles?
Fahd,
Have you tried changing scope="request" in following line
<tiles:importAttribute name="title" scope="page" /> ?
I am looking at "Struts in Action" book co-authored by Ted Husted,
"<tiles:importAttribute/> tag imports all of the Tiles context attributes
into page context: " .
So, after this, you can access the attribute named "title" through page
context.
Reddy Pingili
> -----Original Message-----
> From: Fahd Ahmed [SMTP:[EMAIL PROTECTED]
> Sent: Friday, July 16, 2004 3:46 AM
> To: Struts Users Mailing List
> Subject: RE: how to use controllerclasses with tiles?
>
> ok i'll try to explain.
>
> below is the part of my definitions-config file where i declare the
> controller class
>
> <definition name="header" path="/common/header.jsp" controllerClass
> ="com.sam.tilescontroller.TestTileController" >
> <putList name="globalNavigation">
> <item value="Home" link="/prototype" />
> </putList>
> </definition>
>
>
> my controller class is as follows
>
> package com.sam.tilescontroller;
>
> import java.util.*;
> import java.lang.*;
>
> import javax.servlet.ServletContext;
>
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
>
> import org.apache.struts.tiles.Controller;
> import org.apache.struts.tiles.ComponentContext;
> import org.apache.struts.tiles.actions.TilesAction;
>
>
> class TestTileController extends TilesAction implements Controller
> {
>
> public void perform( ComponentContext context,
> HttpServletRequest request,
> HttpServletResponse response,
> ServletContext servletContext)
> {
> try{
> context.putAttribute("title", "hello from
> controller");
> }catch(Exception ex)
> {
> System.out.println("Exception in TilesController---"
> + ex);
> }
> }
> }
>
>
> now just this code generates the error no matter i use the value stored in
> context in my header.jsp or not. but for completion the header.jsp look
> like
>
> <jsp:root
> xmlns:jsp="http://java.sun.com/JSP/Page"
> xmlns:c="http://java.sun.com/jsp/jstl/core"
> xmlns:tiles="http://jakarta.apache.org/struts/tags-tiles"
> xmlns:fn="http://java.sun.com/jsp/jstl/functions"
> version="2.0" >
>
> <tiles:importAttribute name="title" scope="page" />
>
> <c:url value="/images/safe-logo4.png" var="logoURL"/>
> <table width="100%">
> <tr>
> <td width="20%" align="left"><img src="${logoURL}" /></td>
> <td width="60%" align="center"><font
> size="4"><b>${title}</b></font></td>
> <td width="20%"> </td>
> </tr>
> <tr>
> <td colspan="3" align="center">
> <c:if test="${not empty globalNavigation}">
> <c:forEach items="${globalNavigation}" var="item">
> <c:url var="link" value="${item.link}" />
> | <a href="${link}">${item.value}</a>
> </c:forEach>
> |
> </c:if>
> <jsp:scriptlet>
> System.out.println("ident = " + request.getParameter("title"));
> </jsp:scriptlet>
> </td>
> </tr>
> </table>
> </jsp:root>
>
>
> also the web.xml has the following entry
>
> <servlet>
> <servlet-name>Tiles Servlet</servlet-name>
> <servlet-class>org.apache.struts.tiles.TilesServlet</servlet-class>
> <init-param>
> <param-name>definitions-config</param-name>
>
> <param-value>/WEB-INF/safe-tiles.xml,/WEB-INF/situation-tiles.xml</param-v
> al
> ue>
> </init-param>
> <load-on-startup>2</load-on-startup>
> </servlet>
>
> guess now you may be able to understand and pin point the problem.'
>
> Fahd
>
>
>
>
> -----Original Message-----
> From: Mark Mandel [mailto:[EMAIL PROTECTED]
> Sent: Friday, July 16, 2004 10:38 AM
> To: Struts Users Mailing List
> Subject: Re: how to use controllerclasses with tiles?
>
>
> Fahd,
>
> I've successfully implemented heaps of controller classes, but I'm
> having trouble visualising what you have done.
>
> Any chance of a code example?
>
> Mark
>
> On Fri, 16 Jul 2004 10:35:13 +0500, Fahd Ahmed <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > I am trying to use a controllerClass with Tiles. I am mentioning the
> > controllerClass in one of my definition tags. The controller does
> nothing
> > but put a varible in ComponentContext. On the JSP I just use the
> > importAttribute tag to get that value. But when i access the page, I
> keep
> on
> > getting the following error.
> >
> > [ServletException in:/layouts/threeColumnLayout.jsp] Error - Illegal
> class
> > access :Class org.apache.struts.tiles.ComponentDefinition can not access
> a
> > member of class com.usersmarts.sam.tilescontroller.TestTileController
> with
> > modifiers ""
> >
> > threeColumnlayout is my layout JSP and TestTileController is the
> controller
> > class I am associating with the definition tag.
> >
> > Anyone who can think of a reason???
> >
> > Regards
> > Fahd
>
>
> --
> E: [EMAIL PROTECTED]
> W: www.compoundtheory.com
> ICQ: 3094740
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]