[prev in list] [next in list] [prev in thread] [next in thread] 

List:       struts-user
Subject:    Re: <tiles:put /> in ActionForward.perform()
From:       "Roland Carlsson" <roland.c () swetravel ! se>
Date:       2002-10-31 14:58:40
[Download RAW message or body]

Hí!

I have tried but I missed something.

I'm using the code below to alter the definition with the following request
http://localhost:8081/layout6/page.do?body=/layout6/body2.jsp.

I put the defintion into the request but I have a feeling that I need to do
something more. Now I just come back to the original definintion.

---------------------------------------------------
// Get the name of the defintion from the URI
        String definition = request.getRequestURI();
        definition = definition.substring(0, definition.lastIndexOf('.'));
        // Create new definition from an existing
        cd =  new
ComponentDefinition(DefinitionsUtil.getDefinition(definition, request,
context)) ;
        // Alter the definition
        cd.putAttribute("body", path);
        // Put the definition where the page can find it
        DefinitionsUtil.setActionDefinition( request,  cd) ;
        // Put the definition into the request
        request.setAttribute(definition, cd);
        .
        .
        .
        return mapping.findForward(...);

--------------------------------------------------------

 <action
      path="/layout6/page"
      type="layout.BodyChangeAction" >
        <forward
          name="success"
          path="/layout6/page" />
        <forward
          name="error"
          path="/layout6/error.jsp" />
     </action>

-----------------------------------------
<definition name="/layout6/page" page="/layout6/layout.jsp" >
    <put name="header" value="/layout6/header.jsp"/>
    <put name="footer" value="/layout6/footer.jsp"/>
    <put name="menu" value="/layout6/menu.jsp"/>
    <put name="body" value="/layout6/body1.jsp"/>
  </definition>

-------------------------------------------------

Thanks
Roland Carlsson


----- Original Message -----
From: "Cedric Dumoulin" <cedric@apache.org>
To: "Struts Users Mailing List" <struts-user@jakarta.apache.org>
Sent: Thursday, October 31, 2002 1:49 PM
Subject: Re: <tiles:put /> in ActionForward.perform()


>
>   The context is the tile context. It is associated to current tile, and
> created when you insert the Tile, or forward to a tile. So, it doesn't
> exist if your action is called throw the normal Struts way. But, you
> don't need the context to get a definition from the factory and put it
> in the request scope in order to be used by the struts forward.
>
>         Cedric
>
> Roland Carlsson wrote:
>
> >Ok. so far I have got it but I still doesn't get the request into
context.
> >
> > ComponentContext context = ComponentContext.getContext( request );
> >returns null so I having a hard time to test the
> >org.apache.struts.webapp.tiles.test.TestActionTileAction class.
> >
> >What is wrong when ComponentContext.getContext(request) returns null? I
> >doesn't get any help from the documentation here.
> >
> >Thanks in advace
> >Roland Carlsson
> >
> >
> >----- Original Message -----
> >From: "Cedric Dumoulin" <cedric@apache.org>
> >To: "Struts Users Mailing List" <struts-user@jakarta.apache.org>
> >Sent: Wednesday, October 30, 2002 4:56 PM
> >Subject: Re: <tiles:put /> in ActionForward.perform()
> >
> >
> >
> >
> >>  Ok, I haven't read  carefully enough your previous mail.
> >>  You can create a new definition from a definition read in the factory,
> >>and then instruct current Struts action to use your new definition. More
> >>precisely, the definition associated to the struts forward will be
> >>overloaded by your definition.
> >>  The class org.apache.struts.webapp.tiles.test.TestActionTileAction use
> >>in the tiles-documentation/test do that.
> >>  Following is an extract from this class. The code get the definition,
> >>copy it, modify the copy, and then put it in the appropriate request
> >>attribute. The
> >>
> >>
> >>      // Read definition from factory, but we can create it here.
> >>
> >>        ComponentDefinition definition = DefinitionsUtil.getDefinition(
> >>
> >>
> >... );
> >
> >
> >>        definition = new ComponentDefinition(definition);
> >>
> >>        definition.putAttribute( "attributeName", "aValue" );
> >>
> >>        DefinitionsUtil.setActionDefinition( request, definition);
> >>
> >>  ...
> >>
> >>      return (mapping.findForward("success"));
> >>
> >>
> >>  Cedric
> >>
> >>
> >>
> >>Roland Carlsson wrote:
> >>
> >>
> >>
> >>>Hi !
> >>>I think the DefinitionDispatcherAction doesn't do what I want to do....
> >>>
> >>>Imagine that you have a definition with 2 tiles (left and body)
> >>>In the left tile there are a collection of links that will change the
> >>>content of body.
> >>>
> >>>If I understands what the DefinitonDispatcherAction does it will change
> >>>
> >>>
> >what
> >
> >
> >>>defintion to use. What I want to do is to change one tile in the
> >>>
> >>>
> >defintion,
> >
> >
> >>>much like a frameset where i doesn't change the frameset, only one page
> >>>
> >>>
> >in
> >
> >
> >>>it. So I want to call the same defintion and alter a tile in that
> >>>
> >>>
> >defintion.
> >
> >
> >>>Not change the defintion.
> >>>
> >>>The problem with the perform-method I posted is that it change the tile
> >>>
> >>>
> >in
> >
> >
> >>>the application-scope and I havn't figured out yet how to make the
change
> >>>isolate into a request only.
> >>>
> >>>Regards
> >>>Roland
> >>>
> >>>
> >>>
> >>>
> >>>----- Original Message -----
> >>>From: "Cedric Dumoulin" <cedric@apache.org>
> >>>To: "Struts Users Mailing List" <struts-user@jakarta.apache.org>
> >>>Sent: Wednesday, October 30, 2002 2:11 PM
> >>>Subject: Re: <tiles:put /> in ActionForward.perform()
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>> Hi,
> >>>>
> >>>> I think there is an action in the Tiles/Struts distribution doing
> >>>>exactly that ;-)
> >>>>Check org.apache.struts.tiles.actions.DefinitionDispatcherAction.
> >>>>
> >>>>    Cedric
> >>>>
> >>>>Roland Carlsson wrote:
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>I have solved my own question. If anyone is intrested I past the code
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>below.
> >>>
> >>>
> >>>
> >>>
> >>>>>The change in the definition lasts only for the request and will not
> >>>>>
> >>>>>
> >make
> >
> >
> >>>>>any permanent changes.
> >>>>>
> >>>>>Regards
> >>>>>Roland Carlsson
> >>>>>
> >>>>>
> >>>>>public ActionForward perform(
> >>>>>   ActionMapping mapping,
> >>>>>   ActionForm form,
> >>>>>   HttpServletRequest request,
> >>>>>   HttpServletResponse response)
> >>>>>throws IOException, ServletException
> >>>>>{
> >>>>>  String forward = "success";
> >>>>>  String path = request.getParameter("body");
> >>>>>  // Change nothing
> >>>>>  if(path == null || path.equals("")){
> >>>>>    // do nothing
> >>>>>  }else{
> >>>>>    // Try to change body-page
> >>>>>    ServletContext context =
> >>>>>this.getServlet().getServletConfig().getServletContext();
> >>>>>    ComponentDefinition cd = null;
> >>>>>    try{
> >>>>>    cd = DefinitionsUtil.getDefinition(path, request, context) ;
> >>>>>    cd.put("body", request.getParameter("body"));
> >>>>>    // if something is wrong
> >>>>>    }catch(Exception e){
> >>>>>      e.printStackTrace();
> >>>>>      forward = "error";
> >>>>>    }
> >>>>>  }
> >>>>>  return mapping.findForward(forward);
> >>>>>}
> >>>>>
> >>>>>----- Original Message -----
> >>>>>From: "Roland Carlsson" <roland.c@swetravel.se>
> >>>>>To: "Struts Users Mailing List" <struts-user@jakarta.apache.org>
> >>>>>Sent: Tuesday, October 29, 2002 4:31 PM
> >>>>>Subject: <tiles:put /> in ActionForward.perform()
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>Hi!
> >>>>>>I'm trying to expand my tiles with a dynamic body. I want to control
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>this
> >>>
> >>>
> >>>
> >>>
> >>>>>>body with a simple parameter in the url eg
> >>>>>>http://localhost:8081/myPage?body=aTile.jsp . Does anyone have an
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>example
> >>>
> >>>
> >>>
> >>>
> >>>>>>
> >>>>>>
> >>>>>of
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>how to do this?
> >>>>>>
> >>>>>>Thanks in advance
> >>>>>>Roland Carlsson
> >>>>>>
> >>>>>>
> >>>>>>--
> >>>>>>To unsubscribe, e-mail:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>><mailto:struts-user-unsubscribe@jakarta.apache.org>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>For additional commands, e-mail:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>><mailto:struts-user-help@jakarta.apache.org>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>--
> >>>>>To unsubscribe, e-mail:
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>><mailto:struts-user-unsubscribe@jakarta.apache.org>
> >>>
> >>>
> >>>
> >>>
> >>>>>For additional commands, e-mail:
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>><mailto:struts-user-help@jakarta.apache.org>
> >>>
> >>>
> >>>
> >>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>--
> >>>>To unsubscribe, e-mail:
> >>>>
> >>>>
> >>>>
> >>>>
> >>><mailto:struts-user-unsubscribe@jakarta.apache.org>
> >>>
> >>>
> >>>
> >>>
> >>>>For additional commands, e-mail:
> >>>>
> >>>>
> >>>>
> >>>>
> >>><mailto:struts-user-help@jakarta.apache.org>
> >>>
> >>>
> >>>
> >>>
> >>>--
> >>>To unsubscribe, e-mail:
> >>>
> >>>
> ><mailto:struts-user-unsubscribe@jakarta.apache.org>
> >
> >
> >>>For additional commands, e-mail:
> >>>
> >>>
> ><mailto:struts-user-help@jakarta.apache.org>
> >
> >
> >>>
> >>>
> >>>
> >>>
> >>--
> >>To unsubscribe, e-mail:
> >>
> >>
> ><mailto:struts-user-unsubscribe@jakarta.apache.org>
> >
> >
> >>For additional commands, e-mail:
> >>
> >>
> ><mailto:struts-user-help@jakarta.apache.org>
> >
> >
> >
> >
> >--
> >To unsubscribe, e-mail:
<mailto:struts-user-unsubscribe@jakarta.apache.org>
> >For additional commands, e-mail:
<mailto:struts-user-help@jakarta.apache.org>
> >
> >
> >
> >
>
>
> --
> To unsubscribe, e-mail:
<mailto:struts-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail:
<mailto:struts-user-help@jakarta.apache.org>
>


--
To unsubscribe, e-mail:   <mailto:struts-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:struts-user-help@jakarta.apache.org>

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic