This seems great..  What is the argument against just makeing this part of
the VelocityPortlet?  Currently I have a single .vm file and a huge case
statement to deal with the various screens, very crufty!

Eric

-----Original Message-----
From: Luta, Raphael (VUN) [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 27, 2003 5:51 AM
To: 'Jetspeed Users List'
Subject: RE: Flow and State of a portlet


De : Wei Guan [mailto:[EMAIL PROTECTED]]
> 
> First, I would like to say: Great job.
> 
> I am still puzzling on how to build highly-interactive 
> portlet. Here is a user case:
> 1) the default template is page1.vm rendering default data 
> prepared by buildNormalConent of Action1.java
> 2) on page1.vm, there are couple of links, each link will 
> result an action, generate different data and need diifferent 
> templates to render. For example, there is a link "link1" on page1.vm:
>     page1.vm ---link1--->method in action1---->page2.vm.
> 
> I think this is the sequence in JetSpeed
> 1) action1.buildNormalContent ---> page1.vm
> 2) --->link1--->method in action1 
> -->action1.buildNormalContent--->action1.setTempate(page2.vm)-
> -->page2.vm.
> 
> I am looking for a solution like this.
> 1) action1.buildNormalContent ---> page1.vm
> 2) --->link1--->method in action2 
> -->action2.buildNormalContent--->action2.setTempate(page2.vm)-
> -->page2.vm.
> 

This is not possible in the default VelocityPortlet but it's very easy 
to implement.

For example:
Assumption: you can define a new non-conflicting parameter name
that will handle the state of your portlet, let's say "pstate".

1-  Update your portlet Regsitry definition to have:
  
   <parameter name="action" value="MyDefaultPortletAction" />
   <parameter name="template" value="MyDefaultTemplate.vm" />
   <parameter name="action.update" value="MyActionInStateUpdate" />
   <parameter name="template.update" value="MyUpdateTemplate.vm" />
   <parameter name="action.browse" value="MyActionInStateBrowse" />
   <parameter name="template.browse" value="MyDeleteTemplate.vm" />
    etc...

2- Apply the following patch to VelocityPortlet:

Index: VelocityPortlet.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/portal/portlets/Velo
cityPortlet.java,v
retrieving revision 1.20
diff -r1.20 VelocityPortlet.java
159c159,170
<         String template = getPortletConfig().getInitParameter("template");
---
>         String state = data.getParameters().getString("pstate");
>         
>         String templateName = "template";
>         String actionName = "action";
>         
>         if ((state != null) && (!state.equals("")))
>         {
>             templateName = templateName + "." + state;
>             actionName = actionName + "." + state;
>         }
>         
>         String template =
getPortletConfig().getInitParameter(templateName);
181c192
<         String actionName = getPortletConfig().getInitParameter("action");
---
>         String actionName =
getPortletConfig().getInitParameter(actionName);


Et voila, your portlet now gives you basic built-in controller capabilities
so that you don't even have to use "setTemplate" unless you want to 
redirect your user to a non-standard state template, plus you would have the

following flow control:

- page1.vm
- link1
- actionX.doEvent (depends on the "action" paramater included in the link)
- go to state 2
- action2.buildContext
- page2.vm


--
Rapha�l Luta - [EMAIL PROTECTED]
Jakarta Jetspeed - Enterprise Portal in Java
http://jakarta.apache.org/jetspeed/

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

Reply via email to