[ http://issues.apache.org/struts/browse/STR-1015?page=all ] David Evans reopened STR-1015: ------------------------------
Assign To: (was: Struts Developer Mailing List) > Action "input" not starting with '/' and not a valid forward will cause an > internal server error > ------------------------------------------------------------------------------------------------ > > Key: STR-1015 > URL: http://issues.apache.org/struts/browse/STR-1015 > Project: Struts Action 1 > Type: Improvement > Components: Action > Versions: Nightly Build > Environment: Operating System: other > Platform: All > Reporter: Thomas Heller > Priority: Minor > Fix For: 1.2 Family > > hi there, > im just getting started with struts but [through newbie configuration error] > i accidently found a "bug". it causes an internal server error from tomcat > displaying a long stack trace and i had a pretty hard time finding out what > was wrong. > here is the snippet from my struts-config.xml > [snip] > <action path="/register" > type="my.package.RegisterAction" > name="registrationForm" > scope="request" > input="registration"> > <forward name="success" path="/index.jsp" /> > <forward name="failure" path="/register.jsp"/> > </action> > [/snip] > here is the validate method from my Form: > [snip] > public ActionErrors validate(ActionMapping mapping, HttpServletRequest > request) > { > ActionErrors errors = new ActionErrors(); > errors.add("very.bad.error", new ActionError("very.bad.error")); > return errors; > } > [/snip] > i hardcoded this error cause i wanted to find out how everything works > within struts. > now the process was the following .. i go load a brower point it to the form > fill all fields and press submit. > the struts-internals pretty soon reaches the "processValidate" method from > "RequestProcessor". where we find the following case (NOTE: "input" is > "registration" here!") > [snip] > // Has an input form been specified for this mapping? > String input = mapping.getInput(); > if (input == null) > { > ... > } > request.setAttribute(Action.ERROR_KEY, errors); > String uri = null; > if (appConfig.getControllerConfig().getInputForward()) { > ForwardConfig forward = mapping.findForward(input); > processForwardConfig( request, response, forward); > } else { > internalModuleRelativeForward(input, request, response); > } > [/snip] > as there is no forward configured by name "registration" he does an internal > redirect which ends at the "doForward" method calling > [snip] > RequestDispatcher rd = getServletContext().getRequestDispatcher(uri); > [/snip] > uri in that case is "registration" and we have an exception cause > "getRequestDispatcher" wants a path starting with '/'. > dunno where to fix that but IMHO either the digester should check wether > "input" is a valid forward or starts with "/". > dunno if this was a known issue, just thought i better let u know cause this > would really have driven me mad if i werent into debugging anyways. (and in > the process of learning struts) i know its a configuration error but the i > couldnt find a warning about this issue anywhere in the docs. > thanks & greets > Thomas -- 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 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]