Up until 2.3.12, we've used forms that contained parameter names that used '[' and ']' and those forms worked in both devMode=true and devMode=false. It appears once 2.3.12 was released, this is no longer the case when devMode=true. When forms are submitted, I get the following stack trace exception thrown:
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) If I remove our addActionMessage() override from the base action class, I no longer get this error. It doesn't make any sense to me because our addActionMessage() override is nothing more than the following: public void addActionMessage(String message) { // performs localization string translation and adds the message to parent class super.addActionMessage(getText(message)); } I have yet to find anywhere that says getText() should throw a StringIndexOutOfBoundsException for any reason. Furthermore, I've noticed that we're also getting tremendous dumps from OGNL's runtime about its inability to find setters or being able to set values on the action, even though when dumping the parameter list given to the action, the parameter list is identical to what it always has been previously. For example: 2013-05-09 08:35:37,635 ERROR [com.opensymphony.xwork2.interceptor.ParametersInterceptor]: Developer Notification (set struts.devMode to false to disable this message): Unexpected Exception caught setting 'stockStatus' on 'class com.setech.dw.inventory.web.ItemSearchAction: Error setting expression 'stockStatus' with value ['A', ] Error setting expression 'stockStatus' with value ['A', ] - [unknown location] Caused by: No object in the CompoundRoot has a publicly accessible property named 'stockStatus' (no setter could be found). - [unknown location] at com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.setProperty(CompoundRootAccessor.java:106) at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2315) at ognl.ASTProperty.setValueBody(ASTProperty.java:127) at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) at ognl.SimpleNode.setValue(SimpleNode.java:301) at ognl.Ognl.setValue(Ognl.java:737) at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:224) at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:187) at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:174) In fact, ItemSearchCriteria is exposed via the ModelDriven interface, stockStatus is a private property with public getter/setters. I can disable devMode and of course these messages disappear, but they don't make any valid sense to me because the values are being correctly set in the ItemSearchCriteria model object. I'm concerned that we are likely stuck at 2.3.4 or won't be capable of making use of the devMode feature during development because of the side affects we are experiencing with the latest two GA releases of the framework. ___________________________________________________________ Chris Cranford SAP/Oracle/J2EE Applications Developer SETECH Inc & Companies 903 Industrial Drive, Murfreesboro TN 37129 Phone: (615) 890-1755 x361, Fax: (615) 890-9057, Mobile: (704) 650-1042 Email: chris.cranf...@setech.com<mailto:chris.cranf...@setech.com>