[validator] validwhen strings don't work right
----------------------------------------------

                 Key: STR-2997
                 URL: https://issues.apache.org/struts/browse/STR-2997
             Project: Struts 1
          Issue Type: Bug
          Components: Core
    Affects Versions: 1.2.9, 1.2.4
            Reporter: Eric Haszlakiewicz


I originally noticed this problem with struts 1.2.4, but upgrading to 1.2.9 
didn't fix it.  I can't upgrade to 1.3.5 right now so I don't know if it still 
exists there or not.

It seems that the content of string that is usable by the validwhen validator 
is oddly limited.  It only appears to allow letters and a few other random 
characters.  This makes the validator mostly useless.

I tried to define a field validation using the validwhen validator:

<field property="myfield" depends="validwhen">
     <arg0 key="prop.myfield"/>
      <var>
            <var-name>test</var-name>
            <var-value>(otherfield != "foo:bar")</var-value>
      </var>
</field>

I got an error that looked like this:

ValidWhen Error for field ' myfield' - line 1:20: expecting ''', found ':'

I tried it with a few other characters, but there didn't seem to be any pattern 
to what is allowed and what isn't.

not ok:
    :@#$%^&;,/+

ok:
    *().<>-_=

(not a comprehensive list, I didn't try everything)
I tried using both single and double quotes, but it didn't seem to make a 
difference.
This problem seems to have been mentioned on the mailing lists a few times, but 
I wasn't able to find any answers.

Looking at the definition of STRING_LITERAL in ValidWhenParser.g, it seems like 
any non-quote character should be allowed:
 
STRING_LITERAL : ('\'' (~'\'')+ '\'') | ('\"' (~'\"')+ '\"') ;


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to