[jboss-jira] [JBoss JIRA] Commented: (JBSEAM-343) Action method of source page being executed after destination action

Gavin King (JIRA) jira-events at jboss.com
Mon Sep 18 19:37:52 EDT 2006


    [ http://jira.jboss.com/jira/browse/JBSEAM-343?page=comments#action_12343545 ] 
            
Gavin King commented on JBSEAM-343:
-----------------------------------

Are you sure you have tested this against current CVS? If you have, I need a copy of your very simple test case.

> Action method of source page being executed after destination action
> --------------------------------------------------------------------
>
>                 Key: JBSEAM-343
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-343
>             Project: JBoss Seam
>          Issue Type: Bug
>          Components: JSF
>    Affects Versions: 1.0.1
>         Environment: Windows XP, jboss installation per Seam setup instructions
>            Reporter: Todd Main
>
> I keep having trouble where the "from" page action seems be getting executed when using the <s:link> tag. Here's one example:
> Page "QuickClicks.xhtml" has a pages.xml entry with an action defined, so that the action gets called whenever I view "QuickClicks.xhtml".
>    <page view-id="/QuickClicks.xhtml" action="#{quickClicks.load}"/>
> There's an <s:link> on QuickClicks.xhtml that goes to a different session bean and displays a different xhtml page.
>                             <s:link target="reportResultsFrame" view-id="/Documents.xhtml" action="#{findDocuments.search}">
>                                 <f:param name="dayRange" value="7" />
>                                 <f:param name="documentCategory" value="po" />
>                                 #{quickClicksData.ordersFromLastSeven}
>                             </s:link>
> When I click the link, the quickClicks.load() method is being invoked AFTER findDocuments.search().   It should not be invoked at all, since I'm coming FROM that page, not TO it.
> Note: there is a posting in the Forum (see forum reference) that indicates a possible code fix for AbstractSeamPhaseListener.  Here is what was posted:
> This seems to be happening in AbstractPhaseListener and looks like a bug. The code in question is
> Code:
>    
>    public boolean callPageActions(PhaseEvent event)
>    {
>       Lifecycle.setPhaseId( PhaseId.INVOKE_APPLICATION );
>       boolean actionsWereCalled = false;
>       try
>       {
>          actionsWereCalled = Pages.callAction( event.getFacesContext() ) || actionsWereCalled;
>          actionsWereCalled = Pages.instance().callAction() || actionsWereCalled;
>          return actionsWereCalled;
> The first "Pages.callAction(event.getFacesContext()) || actionsWereCalled " runs the intended action i.e. the action in the second page. Note that at this point, the view-id is still the first page as the lifecycle has not come into the "render" phase -- still in the "Execute" phase. Now that the method returned true, we are again invoking the Pages.instance().callAction() which calls the first view since the view-id is the first page. Thats the reason for the out of order of messages.
> If the code were
> Code:
>     actionsWereCalled = Pages.callAction( event.getFacesContext() ) || actionsWereCalled;
>     actionsWereCalled = actionsWereCalled || Pages.instance().callAction();
>     return actionsWereCalled;
> 	
> that should fix this.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list