Re: tiles:put / in ActionForward.perform()

2002-11-04 Thread Cedric Dumoulin

 Hi,

 Do you have specify the Tiles plugin in your struts-config (struts1.1) 
or the appropriate ComponentActionServlet (Struts1.0.x) ?
 More answers intermixed.
 Cedric


Roland Carlsson wrote:

Hi again!

I think I have got some progress in the subject. I found the
org.apache.struts.webapp.tiles.template.DynTemplateAction and with that as
model i added a page looking like this:
/layout6/page2.jsp--
% taglib uri=/WEB-INF/struts-tiles.tld prefix=tiles %
tiles:insert beanName=test.page 
/tiles:insert
---


 beanName attribute is used to specify to get a definition stored as a 
bean in a jsp scope. Definitions declared in a config file aren't store 
in such scope. They are stored in the definition factory. You should use 
tiles:insert definition=aDefinition ...


So now my action looks like this:
--
action
 path=/layout6/page
 type=layout.BodyChangeAction 
   forward
 name=success
 path=/layout6/page2.jsp /
   forward
 name=error
 path=/layout6/error.jsp /
/action
-

I get the following exception:


javax.servlet.ServletException: Error - Tag Insert : No value defined for
bean 'test.page' with property 'null' in scope 'null'.



 You got it because no bean can be found under requested name.



I also tried to request.getAttribute(test.page); but it returns null so to
me it seems like request.setAttribute(test.page, defintion); doesn't reach
page2.jsp??


 This is consistant with what I have said before. There is no such bean 
in the request context.


Other info:

--/layout6/page-defintion-
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

--Source of my action -
   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().getServletContext();
 ComponentDefinition cd = null;
 try{
   // Get the name of the defintion from the URI
   String definition = request.getRequestURI();
   definition = definition.substring(0, definition.lastIndexOf('.'));
   // Create new definition from and 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) ;

   request.setAttribute(test.page, cd);
 // if something is wrong
 }catch(Exception e){
   e.printStackTrace();
   forward = error;
 }
   }
   return mapping.findForward(forward);



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




Re: tiles:put / in ActionForward.perform()

2002-11-01 Thread Roland Carlsson
Hi again!

I think I have got some progress in the subject. I found the
org.apache.struts.webapp.tiles.template.DynTemplateAction and with that as
model i added a page looking like this:
/layout6/page2.jsp--
% taglib uri=/WEB-INF/struts-tiles.tld prefix=tiles %
tiles:insert beanName=test.page 
/tiles:insert
---

So now my action looks like this:
--
action
  path=/layout6/page
  type=layout.BodyChangeAction 
forward
  name=success
  path=/layout6/page2.jsp /
forward
  name=error
  path=/layout6/error.jsp /
 /action
-

I get the following exception:


javax.servlet.ServletException: Error - Tag Insert : No value defined for
bean 'test.page' with property 'null' in scope 'null'.
-

I also tried to request.getAttribute(test.page); but it returns null so to
me it seems like request.setAttribute(test.page, defintion); doesn't reach
page2.jsp??

Other info:

--/layout6/page-defintion-
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

--Source of my action -
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().getServletContext();
  ComponentDefinition cd = null;
  try{
// Get the name of the defintion from the URI
String definition = request.getRequestURI();
definition = definition.substring(0, definition.lastIndexOf('.'));
// Create new definition from and 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) ;

request.setAttribute(test.page, cd);
  // if something is wrong
  }catch(Exception e){
e.printStackTrace();
forward = error;
  }
}
return mapping.findForward(forward);



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




Re: tiles:put / in ActionForward.perform()

2002-10-31 Thread Roland Carlsson
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 [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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 [EMAIL PROTECTED]
 To: Struts Users Mailing List [EMAIL PROTECTED]
 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 [EMAIL PROTECTED]
 To: Struts Users Mailing List [EMAIL PROTECTED]
 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

Re: tiles:put / in ActionForward.perform()

2002-10-31 Thread Cedric Dumoulin

 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 [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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 [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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 [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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

Re: tiles:put / in ActionForward.perform()

2002-10-30 Thread Roland Carlsson
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 [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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




RE: tiles:put / in ActionForward.perform()

2002-10-30 Thread Holman, Cal
You can use the TilesAction to dynamically change a definition.  Check out
the documentation for dynamic portals.

Cal 

http://www.calandva.com/   

-Original Message-
From: Roland Carlsson [mailto:roland.c;swetravel.se]
Sent: Tuesday, October 29, 2002 10:31
To: Struts Users Mailing List
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
  
Learn more about Paymentech's payment processing services at www.paymentech.com
THIS MESSAGE IS CONFIDENTIAL.  This e-mail message and any attachments are proprietary 
and confidential information intended only for the use of the recipient(s) named 
above.  If you are not the intended recipient, you may not print, distribute, or copy 
this message or any attachments.  If you have received this communication in error, 
please notify the sender by return e-mail and delete this message and any attachments 
from your computer.

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




RE: tiles:put / in ActionForward.perform()

2002-10-30 Thread Holman, Cal
Do the tiles definition and the body attribute have the same name?  I would
think you would have to pass two parameters - the definition to act on and
the body attribute to replace.  Or the definition is constant and only the
body can change.  What does your tiles definition file look like?

Cal 

http://www.calandva.com/   

-Original Message-
From: Roland Carlsson [mailto:roland.c;swetravel.se]
Sent: Wednesday, October 30, 2002 04:04
To: Struts Users Mailing List
Subject: Re: tiles:put / in ActionForward.perform()

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 [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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
  
Learn more about Paymentech's payment processing services at www.paymentech.com
THIS MESSAGE IS CONFIDENTIAL.  This e-mail message and any attachments are proprietary 
and confidential information intended only for the use of the recipient(s) named 
above.  If you are not the intended recipient, you may not print, distribute, or copy 
this message or any attachments.  If you have received this communication in error, 
please notify the sender by return e-mail and delete this message and any attachments 
from your computer.

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




Re: tiles:put / in ActionForward.perform()

2002-10-30 Thread Cedric Dumoulin

 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 [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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




Re: tiles:put / in ActionForward.perform()

2002-10-30 Thread Roland Carlsson
Hello Hal!

I have limit the functionallity of the Action so it will only change the
content of one tile named body.
--
definition name=/layout5/page page=/layout5/layout.jsp 
put name=header value=/layout5/header.jsp/
put name=footer value=/layout5/footer.jsp/
put name=menu value=/layout5/menu.jsp/
put name=body value=/layout5/body1.jsp/
  /definition
-
action
  path=/layout5/page
  type=layout.BodyChangeAction 
forward
  name=success
  path=/layout5/page /
 /action
  /action-mappings
---
http://localhost:8081/layout5/page.do?body=body2.jsp
-

The url will change body in the defintion from body1.jsp to body2.jsp for
this request.

The definition and the action have the same name. If they didn't have the
same name I must send the name of the definition name as an parameter in the
url. I don't know if there is a better way of doing this?

Scary Halloween Regards
Roland Carlsson




- Original Message -
From: Holman, Cal [EMAIL PROTECTED]
To: 'Struts Users Mailing List' [EMAIL PROTECTED]
Sent: Wednesday, October 30, 2002 1:44 PM
Subject: RE: tiles:put / in ActionForward.perform()


 Do the tiles definition and the body attribute have the same name?  I
would
 think you would have to pass two parameters - the definition to act on and
 the body attribute to replace.  Or the definition is constant and only the
 body can change.  What does your tiles definition file look like?

 Cal

 http://www.calandva.com/

 -Original Message-
 From: Roland Carlsson [mailto:roland.c;swetravel.se]
 Sent: Wednesday, October 30, 2002 04:04
 To: Struts Users Mailing List
 Subject: Re: tiles:put / in ActionForward.perform()

 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 [EMAIL PROTECTED]
 To: Struts Users Mailing List [EMAIL PROTECTED]
 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

 Learn more about Paymentech's payment processing services at
www.paymentech.com
 THIS MESSAGE IS CONFIDENTIAL.  This e-mail message and any attachments are
proprietary and confidential information intended only for the use of the
recipient(s) named above.  If you are not the intended recipient, you may
not print, distribute, or copy this message or any attachments.  If you have
received this communication in error, please notify the sender by return
e-mail and delete this message and any attachments from your computer.

 --
 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




Re: tiles:put / in ActionForward.perform()

2002-10-30 Thread Roland Carlsson
Ok, I'll take a look into that one. I found out that my Action did last over
requests... witch it isn't supposed to do. :-( So I'm back to square one.

Regards
Roland

- Original Message -
From: Cedric Dumoulin [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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 [EMAIL PROTECTED]
 To: Struts Users Mailing List [EMAIL PROTECTED]
 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




Re: tiles:put / in ActionForward.perform()

2002-10-30 Thread Roland Carlsson
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 [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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 [EMAIL PROTECTED]
 To: Struts Users Mailing List [EMAIL PROTECTED]
 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




Re: tiles:put / in ActionForward.perform()

2002-10-30 Thread Cedric Dumoulin

 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 [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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 [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
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