[ http://issues.apache.org/struts/browse/SHALE-188?page=all ]
Wendy Smoak updated SHALE-188: ------------------------------ Comment: was deleted > Add a default outcome to the dialog manager > ------------------------------------------- > > Key: SHALE-188 > URL: http://issues.apache.org/struts/browse/SHALE-188 > Project: Shale > Issue 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