[ 
http://issues.apache.org/struts/browse/SHALE-188?page=comments#action_37489 ] 

Laure Goudon commented on SHALE-188:
------------------------------------

There was an error in the proposed patch (outcome instead of 
DEFAULT_OUTCOME_NAME). Here is the fixed version :

// ---- Begin patch ---- 
 
 // If not found, check the default outcome for the current state 
 if (transition == null) { 
     Transition transition = state.findTransition(DEFAULT_OUTCOME_NAME); 
 
     // If not found, check the default outcome for the current dialog. 
     if (transition == null) { 
         transition = state.getDialog().findTransition(DEFAULT_OUTCOME_NAME); 
     } 
 } 
 
 // ---- End patch ---- 

> Add a default outcome to the dialog manager
> -------------------------------------------
>
>          Key: SHALE-188
>          URL: http://issues.apache.org/struts/browse/SHALE-188
>      Project: Shale
>         Type: Improvement

>   Components: Core
>  Environment: Debian Linux - JDK 1.5
>     Reporter: Laure Goudon

>
> Version from manifest: Implementation-Version: 20060326
> Hello,
> When we click on the browser back button while in a dialog and then click on 
> another link or button, an Illegal argument exception comes (see stacktrace). 
> This error occurs because Shale can't find any transition for this action. It 
> would be a good idea that we could have a default transition (for instance 
> named "*" or "default") that the dialog navigation handler class would use if 
> no other transition was found for this state or dialog.
> Thanks.
> stacktrace :
> java.lang.IllegalArgumentException: You have requested a transition outcome 
> named "clusterMenu" from a state named "viewApplicationView" in a dialog 
> named "viewApplication", but no transition definition can be found.  Double 
> check the spelling of the transition outcome name.
>       at 
> org.apache.shale.dialog.faces.DialogNavigationHandler.transition(DialogNavigationHandler.java:526)
>       at 
> org.apache.shale.dialog.faces.DialogNavigationHandler.postprocess(DialogNavigationHandler.java:353)
>       at 
> org.apache.shale.dialog.faces.DialogNavigationHandler.handleNavigation(DialogNavigationHandler.java:219)
>       at 
> org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:84)
>       at javax.faces.component.UICommand.broadcast(UICommand.java:106)
>       at 
> org.apache.myfaces.custom.navmenu.htmlnavmenu.HtmlCommandNavigationItem.broadcast(HtmlCommandNavigationItem.java:228)
> Proposed solution :
> In the class DialogNavigationHandler in the method transition
>       /** Default outcome name constant as in :
>        *  <transition outcome="*" target="exit"/>
>        */
>       public static final String DEFAULT_OUTCOME_NAME = "*";
>         // Identify the appropriate Transition
>         Transition transition = state.findTransition(outcome);
>         if (transition == null) {
>             transition = state.getDialog().findTransition(outcome);
>         // ---- Begin patch ----
>         // If not found, check the default outcome for the current state
>           if (transition == null) {
>            Transition transition = state.findTransition(outcome);
>            // If not found, check the default outcome for the current dialog.
>            if (transition == null) {
>              transition = 
> state.getDialog().findTransition(DEFAULT_OUTCOME_NAME);
>            }
>         }
>         // ---- End patch ----
>         }
>       if (transition == null) {
>             throw new 
> IllegalArgumentException(messages.getMessage("dialog.noTransition",
>                                                new Object[] { outcome,
>                                                               state.getName(),
>                                                               
> state.getDialog().getName() }));
>         }

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

Reply via email to