[ http://issues.apache.org/struts/browse/STR-2971?page=comments#action_38640 ] Niall Pemberton commented on STR-2971: --------------------------------------
History of this was that the flavour that works with bundles was added when bundle support was added. Can't actually remember why I introduced a new method, except that getting the ServletContext via the Session causes a session to be created if it doesn't already exist - the ServletContext in the Validator object is retrieved from the Servlet which is available in the ActionForm when the Validator object is initialized. I agree that the old method should have been deprecated, which I have now done http://svn.apache.org/viewvc?view=rev&revision=472736 Niall > one of validator.Resources.getActionMessage method does not respect message's > "bundle" attribute > ------------------------------------------------------------------------------------------------ > > Key: STR-2971 > URL: http://issues.apache.org/struts/browse/STR-2971 > Project: Struts 1 > Issue Type: Bug > Affects Versions: 1.2.9 > Environment: Struts 1.2.9, commons-validator 1.1.4 > Reporter: Christopher Schultz > Priority: Minor > > I have a custom validator that uses the currently-loged-in user's date format > preferences to validate date input. I use the following code to return error > messages when there is a problem: > if(error) > { > errors.add(field.getKey(), > Resources.getActionMessage(request, va, field)); > return Boolean.FALSE; > } > The variables 'field' (commons.validator.Field), 'request', > (HttpServletRequest) and 'va' (commons.validator.ValidatorAction) are all > passed-in as parameters to this method, similar to other validateFoo(...) > methods/classes. > I recently separated my application resources (strings) into separate files > based upon user role, to help manage the avalance of strings I had to deal > with. I added a "bundle" attribute to my <msg> elements in my validation > configuration file. This works for all of the stock validators, but not mine. > I checked to see what the difference was between my code and the validators > defined in struts.validator.FieldChecks, and they use this: > errors.add(field.getKey(), > Resources.getActionMessage(validator, request, va, > field)); > Note the addition of that first parameter. I checked the code for these two > different methods in the Resources class, and it appears that the latter will > use the bundle attribute and get the appropriate message resource. > I'm happy to change my code to use this other method -- it's no sweat to make > that change. But I was suprised to see that this particular variety of the > getActionMessage method did not respect the bundle setting, and also did not > document that behavior. > The "working" method uses the ValidatorAction parameter (missing in the > method in question) to get the ServletContext where the MessageResources > objects can be located. Since the HttpServletRequest is available in the > "non-working" method, I believe this can still be achieved. > Perhaps this "non-working" method should be deprecated in favor of the second > method? Or, is there some historical reason why it needs to exist, and > exhibit this behavior? -- 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
