Hi Cyril,
you do not have to use actions if you do not want :-)
As I said, when you use session namespace, there is always a variable
session there in the generated java code. You can access this session either
directly in xsp page from within <xsp:logic> tags, or you can write your own
taglib. This taglib can then implicitly use session variable, though it will
never be declared there. What I propose to you is a kind of dirty
programming style, but as I understood you want a quick solution.

Try something like this, you have to experiment and always look at the
generated code:

<?xml version="1.0"?>
<xsp:page
xmlns:xsp="http://apache.org/xsp";
xmlns:xsp-session="http://apache.org/xsp/session/2.0";
xmlns:xsp-request="http://apache.org/xsp/request/2.0"; create-session="true">

<html>
  <xsp:logic>
    // beginning of the java code

    try {
   // Cart items are maintained in the session object.
    Vector items = (Vector)session.getAttribute("cart.items");
         if (items == null) { items = new Vector(10,5);}

       String item = req.getParameter("item");
       items.add(item);

       session.setAttribute("cart.items",items);
  </xsp:logic>

<b>The list of items is:</b> <xsp-session:get-attribute name="cart.items"
default="not set"/>

</html>

</xsp:page>

Roman


-----Original Message-----
From: Cyril Vidal [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 05, 2003 1:53 PM
To: [EMAIL PROTECTED]
Subject: Re: xsp session logicsheet



Hi Roman,

Indeed I've done this:
<?xml version="1.0"?>

<xsp:page

xmlns:xsp="http://apache.org/xsp";

xmlns:xsp-session="http://apache.org/xsp/session/2.0";

xmlns:xsp-request="http://apache.org/xsp/request/2.0";

create-session="true">

<html>

<xsp-session:set-attribute name="cart.items"><xsp-request:get-parameter
name="item"/></xsp-session:set-attribute>

<b>The list of items is:</b> <xsp-session:get-attribute name="cart.items"
default="not set"/>

<br/>

<b>Your session was created:</b> <xsp-session:get-creation-time
as="string"/>

</html>

</xsp:page>

My problem is the following: I would like to add items to the attribute's
session 'cart.items'.
For the moment, the preceding code doesn't do this task.
When I call http://localhost:8080/cocoo/mount/try/session.xsp?item=3

I receive the following html result:
The list of items is: 3
Your session was created: Wed Feb 05 13:41:32 CET 2003

when I then call http://localhost:8080/cocoo/mount/try/session.xsp?item=5
The result is the following:
The list of items is: 5
Your session was created: Wed Feb 05 13:41:32 CET 2003

and of course, I would like
The list of items is: 3, 5
Your session was created: Wed Feb 05 13:41:32 CET 2003


What i would like to know : is it possible to achieve this task by using
Session Logicsheet by itself, does this Logicsheet provides this
functionnality?
If not, the alternative is also to use actions, as suggested in this thread
before?
Is a built-in action available for this, or do I have to build one from
scratch?

Any help or hint would help me,
Thanks,
Cyril.



> Hi Cyril,
> try adding
>
> xmlns:session="http://apache.org/xsp/session/2.0";
>
> namespace to your xsp page. Then have a look at the generated code.
> Basically you should see a java variable (object) named "session", with it
> you can do what you want. No need to declare it, cocoon does it for you.
> Roman
>
> -----Original Message-----
> From: Cyril Vidal [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, February 05, 2003 11:01 AM
> To: [EMAIL PROTECTED]
> Subject: Re: xsp session logicsheet
>
>
>
> Thanks for you response.
> hum, I guess actions are still a little bit too complex for me, regarding
my
> knowledge of Cocoon...
>
> Isn't it really possible to add merely values to the same session's
> attribute with the ESQL logicsheet? It   sounds  odd...
>
> Cyril.
>
> > Hi Cyril
> > Why don't use an action, I think it's better not to have too much Java
> code
> > in your xsp-pages.
> > In an action you can take your code as it is.
> > Cheers
> > Beat
> >
> > > Hi,
> > >
> > > I would like to deal with session through xsp, and serve as far as
> > > possible
> > > the same goal as with the following servlet: e.g put all the
parameters
> > > named 'item' in the object of type Vector 'items' bound to the current
> > > session, so that it would be possible to list at any time all of the
> items
> > > chosen so far by the client in his session.
> > >
> > >  public void doGet(HttpServletRequest req, HttpServletResponse res)
> > >                                throws ServletException, IOException {
> > >     res.setContentType("text/html");
> > >     PrintWriter out = res.getWriter();
> > >
> > >     // Get the current session object, create one if necessary.
> > >     HttpSession session = req.getSession(true);
> > >
> > >     // Cart items are maintained in the session object.
> > >    Vector items = (Vector)session.getAttribute("cart.items");
> > >         if (items == null) { items = new Vector(10,5);}
> > >
> > >       String item = req.getParameter("item");
> > >       items.add(item);
> > >
> > >        session.setAttribute("cart.items",items);
> > >
> > >     out.println("<HTML><HEAD><TITLE>SessionTracker
> > > modifie</TITLE></HEAD>");
> > >     out.println("<BODY><H1>Session Tracking Demo</H1>");
> > >
> > >     // Print the current cart items.
> > >     out.println("You currently have the following items in your
> > > cart:<BR>");
> > >     if (items == null) {
> > >       out.println("<B>None</B>");
> > >     }
> > >     else {
> > >       out.println("<UL>");
> > >       for (int i = 0; i < items.size(); i++) {
> > >         out.println("<LI>" + items.get(i));
> > >       }
> > >       out.println("</UL>");
> > >     }
> > >
> > >
> > >     out.println("</BODY></HTML>");
> > >   }
> > > }
> > >
> > >  Below is the xsp i've written for the moment,: this is working fine,
> but
> > > does not do what I want: because each time the client chooses an item
> and
> > > pass it via the parameter 'item', instead of being added in the object
> > > cart.items, its value overrides this of the preceding parameter.
> > >
> > > <?xml version="1.0"?>
> > >
> > > <xsp:page
> > >
> > > xmlns:xsp="http://apache.org/xsp";
> > >
> > > xmlns:xsp-session="http://apache.org/xsp/session/2.0";
> > >
> > > xmlns:xsp-request="http://apache.org/xsp/request/2.0";
> > >
> > > create-session="true">
> > >
> > > <html>
> > >
> > > <xsp-session:set-attribute
name="cart.items"><xsp-request:get-parameter
> > > name="item"/></xsp-session:set-attribute>
> > >
> > > <b>You currently have the following items in your cart:</b>
> > > <xsp-session:get-attribute name="cart.items"/>
> > >
> > > <br/>
> > >
> > > <b>Your session was created:</b> <xsp-session:get-creation-time
> > > as="string"/>
> > >
> > > </html>
> > >
> > > </xsp:page>
> > >
> > > Some of you would know how I can improve my code? Indeed, I would like
> > > cart.items to be like a Vector, so that it would be possible to put
> merely
> > > values onto it.
> > > Thanks in advance for your help,
> > > Cyril.
> > >

---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
For additional commands, e-mail:   <[EMAIL PROTECTED]>

Reply via email to