[ https://issues.apache.org/jira/browse/WW-4066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13662035#comment-13662035 ]
Chris Cranford commented on WW-4066: ------------------------------------ bq. If you take a look on paramsPrepareParamsStack you will spot that the params interceptor is listed two times - before and after prepare, but there is also modelDriven listed just before the second params which will put non-null Model onto stack. I don't recall specifically why the interceptor stack was designed that way beyond perhaps being backward compatible. I recall a discussion sometime back where it was decided that the interceptor stack would be designed this way. I just applied 2.3.4.1 to the sample application and with devMode=true, I do see where the OGNL exceptions are written to the logs, perhaps I had overlooked them prior. What boggles me however, is that StringIndexOutOfBoundsException isn't thrown as a side affect. And the stack trace related to that exception is coming from {{LocalizedTextUtil}}. Why is that just now surfacing but not in prior builds? > Submitting form with parameters using brackets while devMode=true yields > StringIndexOutOfBoundsException > -------------------------------------------------------------------------------------------------------- > > Key: WW-4066 > URL: https://issues.apache.org/jira/browse/WW-4066 > Project: Struts 2 > Issue Type: Bug > Components: Core Actions > Affects Versions: 2.3.14 > Reporter: Chris Cranford > Assignee: Lukasz Lenart > Fix For: 2.3.15 > > Attachments: testcase.zip > > > Our BaseAction which extends ActionSupport overrides the addActionMessage() > with the following: > {code:java} > @Override > public void addActionMessage(String message) { > super.addActionMessage(getText(message)); > } > {code} > With the above method in place during devMode=true, the following error stack > trace occurs: > {noformat} > java.lang.StringIndexOutOfBoundsException: String index out of range: -1 > at java.lang.String.substring(String.java:1871) > at > com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:426) > at > com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:362) > at > com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:208) > at > com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:123) > at com.opensymphony.xwork2.ActionSupport.getText(ActionSupport.java:103) > at com.setech.dw.common.web.BaseAction.addActionMessage(BaseAction.java:209) > at > com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:337) > at > com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:241) > {noformat} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira