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>

Reply via email to