You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-user@portals.apache.org by cy...@almacenes-paris.cl on 2004/06/25 22:11:46 UTC

Template question

Hi.. I'll try to explain my problem... hope you can undertand it.
I've a VelocityPortlet with his default template. This template shows a 
list of articles already stored in the db, and has a link to add a new 
one: $jslink?eventSubmit_doEdit=

This method (doEdit) only set a template wich has the input fields:
 
    public void doEdit(RunData rundata, Context context) throws Exception 
{
            String id = rundata.getParameters().getString(ID);
            if (id!=null){
                ArticlesManager mng = new ArticlesManager();
                Article article = mng.getArticle(new 
Long(id).longValue());
                context.put("article", article);
            }
            context.put("totalLinks", new Integer(0));
            setTemplate(rundata, "addArticle");
    }

Until here, everything goes fine...

My problem is that I need to send some info from this template (addArticle 
- not the default) and come back to the same template, and always, despite 
of explicity set the template in the event method, the flow of the 
application goes to the default template.

This is the event I'm calling:

        public void doAddlinks(RunData rundata, Context context) throws 
Exception {
                ...
            int totalLinks = rundata.getParameters().getInt("totalLinks", 
0);

                ... 

            context.put("totalLinks", new Integer(totalLinks));
            setTemplate(rundata, "addArticle");
    }

please, any help would be very appreciated.

regards,
Carlos.


Re: Template question

Posted by cy...@almacenes-paris.cl.
Any ideas???





cyaconi@almacenes-paris.cl 
25-06-2004 16:11
Por favor, responda a
"Jetspeed Users List" <je...@jakarta.apache.org>


Para
jetspeed-user@jakarta.apache.org
cc

Asunto
Template question






Hi.. I'll try to explain my problem... hope you can undertand it.
I've a VelocityPortlet with his default template. This template shows a 
list of articles already stored in the db, and has a link to add a new 
one: $jslink?eventSubmit_doEdit=

This method (doEdit) only set a template wich has the input fields:
 
    public void doEdit(RunData rundata, Context context) throws Exception 
{
            String id = rundata.getParameters().getString(ID);
            if (id!=null){
                ArticlesManager mng = new ArticlesManager();
                Article article = mng.getArticle(new 
Long(id).longValue());
                context.put("article", article);
            }
            context.put("totalLinks", new Integer(0));
            setTemplate(rundata, "addArticle");
    }

Until here, everything goes fine...

My problem is that I need to send some info from this template (addArticle 

- not the default) and come back to the same template, and always, despite 

of explicity set the template in the event method, the flow of the 
application goes to the default template.

This is the event I'm calling:

        public void doAddlinks(RunData rundata, Context context) throws 
Exception {
                ...
            int totalLinks = rundata.getParameters().getInt("totalLinks", 
0);

                ... 

            context.put("totalLinks", new Integer(totalLinks));
            setTemplate(rundata, "addArticle");
    }

please, any help would be very appreciated.

regards,
Carlos.



Re: Template question

Posted by Michael Rothrock <mi...@michaelrothrock.com>.
I use JSPs, but I think the approach that I use will work for Velocity as
well.

Basically, what I do is add template selection logic to buildNormalContext.
In that method, I look at the current state of the portlet (more on that in
a sec) and then select the appropriate template.  For example, if the
portlet is in the "list" state, then I select the JSP template that displays
a list of elements (and expects certain things to be in the context).  If
the state is "detail", then I select the detail template and place the
appropriate information in the context.

There are two different ways to retain the state of the portlet: either in
the portlet temp space, or as a parameter on the url.  My first approach was
to store the state of the portlet in the temp space, but I discovered that
that led to confusing behavior, specifically when the user used the "back"
button on the browser.  I switched over to storing the state as a parameter
on the url as that led to a more straightforward user experience.

I set the state of the portlet through actions.  For example, I have a
"doDetail" method that adds the appropriate parameter to the request.  It
then calls buildNormalContext, which finds the flag and switches the
template appropriately.

This is a simplification, but you get the idea.

-- Michael


On 6/25/04 1:11 PM, "cyaconi@almacenes-paris.cl"
<cy...@almacenes-paris.cl> wrote:

> Hi.. I'll try to explain my problem... hope you can undertand it.
> I've a VelocityPortlet with his default template. This template shows a
> list of articles already stored in the db, and has a link to add a new
> one: $jslink?eventSubmit_doEdit=
> 
> This method (doEdit) only set a template wich has the input fields:
>  
>     public void doEdit(RunData rundata, Context context) throws Exception
> {
>             String id = rundata.getParameters().getString(ID);
>             if (id!=null){
>                 ArticlesManager mng = new ArticlesManager();
>                 Article article = mng.getArticle(new
> Long(id).longValue());
>                 context.put("article", article);
>             }
>             context.put("totalLinks", new Integer(0));
>             setTemplate(rundata, "addArticle");
>     }
> 
> Until here, everything goes fine...
> 
> My problem is that I need to send some info from this template (addArticle
> - not the default) and come back to the same template, and always, despite
> of explicity set the template in the event method, the flow of the
> application goes to the default template.
> 
> This is the event I'm calling:
> 
>         public void doAddlinks(RunData rundata, Context context) throws
> Exception {
>                 ...
>             int totalLinks = rundata.getParameters().getInt("totalLinks",
> 0);
> 
>                 ...
> 
>             context.put("totalLinks", new Integer(totalLinks));
>             setTemplate(rundata, "addArticle");
>     }
> 
> please, any help would be very appreciated.
> 
> regards,
> Carlos.
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-user-help@jakarta.apache.org