You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-user@incubator.apache.org by Laurie Harper <la...@holoweb.net> on 2006/08/26 04:01:35 UTC

Dialogs and data passing

I'm trying to figure out how to pass data into a dialog view, using  
dialog parameters and/or page flow scope. Unfortunately, there seems  
to be a process order disparity, unless I'm missing something  
obvious... ;-)

Say I have a view, view1.xhtml, backed by a managed bean named view1.  
In my view, I include the following markup:

   <tr:commandLink action="#{view1.action}" launchListener="# 
{view1.launch} ...

and in my backing bean, I have the methods defined as

   public String action() {
     System.out.println("action");
     getPageFlowScope().put("pfs", "pfs1");
     return "dialog:view2";
   }
   public void launch(LaunchEvent e) {
     System.out.println("launch");
     getPageFlowScope().put("pfs", "pfs2");
     e.getDialogParameters().put("data", "foo");
   }

I have a navigation rule mapping dialog:view2 to a view, view2.xhtml,  
backed by a managed bean named view2, which is a Shale  
ViewController. The life-cycle methods on view2 look like

   public void init() {
     System.out.println("init:");
     System.out.println("  pfs="+getPageFlowScope().get("pfs"));
     System.out.println("  data="+getPageFlowScope().get("data"));
   }
   public void preprocess() {
     System.out.println("preprocess:");
     System.out.println("  pfs="+getPageFlowScope().get("pfs"));
     System.out.println("  data="+getPageFlowScope().get("data"));
   }
   public void prerender() {
     System.out.println("prerender:");
     System.out.println("  pfs="+getPageFlowScope().get("pfs"));
     System.out.println("  data="+getPageFlowScope().get("data"));
   }

Now, when I click the link, the following is printed to the console:

action
init:
   pfs=pfs1
   data=null
launch
prerender:
   pfs=pfs1
   data=null
init:
   pfs=pfs2
   data=foo
prerender: data=foo
   pfs=pfs2
   data=foo

What I assume is happening is that the action fires, then navigation  
occurs; the Trinidad nav handler calls down to its delegate, which  
creates the target view. Trinidad's launch handler then stores that  
for later processing by the dialog mechanism and restores the  
previous view. Next, the dialog launch process kicks in, firing the  
launch listener, which sets up the dialog parameters. Then the new  
view gets rendered, but can't see the dialog parameters since it was  
created before they got set. Finally, the new window for the dialog  
opens, and a *new* request comes in, asking for the previously queued  
dialog view. The dialogs parameters are only now made available to  
the view.

The problem is if the dialog view needs the data that's passed  
through the dialog parameter ('data' here), which isn't available the  
first time through...

I've got things working for now by putting the data into page flow  
scope in action(), but that effectively means it's in the 'outer'  
scope rather than just the dialog scope -- and makes launch()  
redundant. So the question is, am I fundamentally misunderstanding  
how dialog parameters should be used?

L.
--
Laurie Harper
Open Source advocate, Java geek: http://www.holoweb.net/laurie
Founder, Zotech Software: http://www.zotechsoftware.com/




Re: Dialogs and data passing

Posted by Matthias Wessendorf <ma...@apache.org>.
so in your case, the outcome is "dialog:xxx"
if fires

On 8/27/06, Matthias Wessendorf <ma...@apache.org> wrote:
> Laurie,
>
> if the launchListener fires depends on the outcome.
> means the action method is called *before* the lanuncerMethodBinding
>
>
>
> On 8/25/06, Laurie Harper <la...@holoweb.net> wrote:
> > I'm trying to figure out how to pass data into a dialog view, using
> > dialog parameters and/or page flow scope. Unfortunately, there seems
> > to be a process order disparity, unless I'm missing something
> > obvious... ;-)
> >
> > Say I have a view, view1.xhtml, backed by a managed bean named view1.
> > In my view, I include the following markup:
> >
> >    <tr:commandLink action="#{view1.action}" launchListener="#
> > {view1.launch} ...
> >
> > and in my backing bean, I have the methods defined as
> >
> >    public String action() {
> >      System.out.println("action");
> >      getPageFlowScope().put("pfs", "pfs1");
> >      return "dialog:view2";
> >    }
> >    public void launch(LaunchEvent e) {
> >      System.out.println("launch");
> >      getPageFlowScope().put("pfs", "pfs2");
> >      e.getDialogParameters().put("data", "foo");
> >    }
> >
> > I have a navigation rule mapping dialog:view2 to a view, view2.xhtml,
> > backed by a managed bean named view2, which is a Shale
> > ViewController. The life-cycle methods on view2 look like
> >
> >    public void init() {
> >      System.out.println("init:");
> >      System.out.println("  pfs="+getPageFlowScope().get("pfs"));
> >      System.out.println("  data="+getPageFlowScope().get("data"));
> >    }
> >    public void preprocess() {
> >      System.out.println("preprocess:");
> >      System.out.println("  pfs="+getPageFlowScope().get("pfs"));
> >      System.out.println("  data="+getPageFlowScope().get("data"));
> >    }
> >    public void prerender() {
> >      System.out.println("prerender:");
> >      System.out.println("  pfs="+getPageFlowScope().get("pfs"));
> >      System.out.println("  data="+getPageFlowScope().get("data"));
> >    }
> >
> > Now, when I click the link, the following is printed to the console:
> >
> > action
> > init:
> >    pfs=pfs1
> >    data=null
> > launch
> > prerender:
> >    pfs=pfs1
> >    data=null
> > init:
> >    pfs=pfs2
> >    data=foo
> > prerender: data=foo
> >    pfs=pfs2
> >    data=foo
> >
> > What I assume is happening is that the action fires, then navigation
> > occurs; the Trinidad nav handler calls down to its delegate, which
> > creates the target view. Trinidad's launch handler then stores that
> > for later processing by the dialog mechanism and restores the
> > previous view. Next, the dialog launch process kicks in, firing the
> > launch listener, which sets up the dialog parameters. Then the new
> > view gets rendered, but can't see the dialog parameters since it was
> > created before they got set. Finally, the new window for the dialog
> > opens, and a *new* request comes in, asking for the previously queued
> > dialog view. The dialogs parameters are only now made available to
> > the view.
> >
> > The problem is if the dialog view needs the data that's passed
> > through the dialog parameter ('data' here), which isn't available the
> > first time through...
> >
> > I've got things working for now by putting the data into page flow
> > scope in action(), but that effectively means it's in the 'outer'
> > scope rather than just the dialog scope -- and makes launch()
> > redundant. So the question is, am I fundamentally misunderstanding
> > how dialog parameters should be used?
> >
> > L.
> > --
> > Laurie Harper
> > Open Source advocate, Java geek: http://www.holoweb.net/laurie
> > Founder, Zotech Software: http://www.zotechsoftware.com/
> >
> >
> >
> >
>
>
> --
> Matthias Wessendorf
>
> further stuff:
> blog: http://jroller.com/page/mwessendorf
> mail: mwessendorf-at-gmail-dot-com
>


-- 
Matthias Wessendorf

further stuff:
blog: http://jroller.com/page/mwessendorf
mail: mwessendorf-at-gmail-dot-com

Re: Dialogs and data passing

Posted by Matthias Wessendorf <ma...@apache.org>.
Laurie,

if the launchListener fires depends on the outcome.
means the action method is called *before* the lanuncerMethodBinding



On 8/25/06, Laurie Harper <la...@holoweb.net> wrote:
> I'm trying to figure out how to pass data into a dialog view, using
> dialog parameters and/or page flow scope. Unfortunately, there seems
> to be a process order disparity, unless I'm missing something
> obvious... ;-)
>
> Say I have a view, view1.xhtml, backed by a managed bean named view1.
> In my view, I include the following markup:
>
>    <tr:commandLink action="#{view1.action}" launchListener="#
> {view1.launch} ...
>
> and in my backing bean, I have the methods defined as
>
>    public String action() {
>      System.out.println("action");
>      getPageFlowScope().put("pfs", "pfs1");
>      return "dialog:view2";
>    }
>    public void launch(LaunchEvent e) {
>      System.out.println("launch");
>      getPageFlowScope().put("pfs", "pfs2");
>      e.getDialogParameters().put("data", "foo");
>    }
>
> I have a navigation rule mapping dialog:view2 to a view, view2.xhtml,
> backed by a managed bean named view2, which is a Shale
> ViewController. The life-cycle methods on view2 look like
>
>    public void init() {
>      System.out.println("init:");
>      System.out.println("  pfs="+getPageFlowScope().get("pfs"));
>      System.out.println("  data="+getPageFlowScope().get("data"));
>    }
>    public void preprocess() {
>      System.out.println("preprocess:");
>      System.out.println("  pfs="+getPageFlowScope().get("pfs"));
>      System.out.println("  data="+getPageFlowScope().get("data"));
>    }
>    public void prerender() {
>      System.out.println("prerender:");
>      System.out.println("  pfs="+getPageFlowScope().get("pfs"));
>      System.out.println("  data="+getPageFlowScope().get("data"));
>    }
>
> Now, when I click the link, the following is printed to the console:
>
> action
> init:
>    pfs=pfs1
>    data=null
> launch
> prerender:
>    pfs=pfs1
>    data=null
> init:
>    pfs=pfs2
>    data=foo
> prerender: data=foo
>    pfs=pfs2
>    data=foo
>
> What I assume is happening is that the action fires, then navigation
> occurs; the Trinidad nav handler calls down to its delegate, which
> creates the target view. Trinidad's launch handler then stores that
> for later processing by the dialog mechanism and restores the
> previous view. Next, the dialog launch process kicks in, firing the
> launch listener, which sets up the dialog parameters. Then the new
> view gets rendered, but can't see the dialog parameters since it was
> created before they got set. Finally, the new window for the dialog
> opens, and a *new* request comes in, asking for the previously queued
> dialog view. The dialogs parameters are only now made available to
> the view.
>
> The problem is if the dialog view needs the data that's passed
> through the dialog parameter ('data' here), which isn't available the
> first time through...
>
> I've got things working for now by putting the data into page flow
> scope in action(), but that effectively means it's in the 'outer'
> scope rather than just the dialog scope -- and makes launch()
> redundant. So the question is, am I fundamentally misunderstanding
> how dialog parameters should be used?
>
> L.
> --
> Laurie Harper
> Open Source advocate, Java geek: http://www.holoweb.net/laurie
> Founder, Zotech Software: http://www.zotechsoftware.com/
>
>
>
>


-- 
Matthias Wessendorf

further stuff:
blog: http://jroller.com/page/mwessendorf
mail: mwessendorf-at-gmail-dot-com