[ 
https://issues.apache.org/struts/browse/STR-2997?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_39953
 ] 

Henri Yandell commented on STR-2997:
------------------------------------

Looking at the valid chars, the pattern seems to be characters that are legal 
outside of a string literal. I'd bet that '[' and ']' are okay too. Also '!' is 
probably okay. '-' would be okay because negative numbers are supported.

So I'm guessing the problem is that the STRING_LITERAL is not being applied to 
the part inside the quotes; instead it is treating it as source. Looking at 
ValidWhenParser.g, I can't see any obvious reasons why that'd be so.

> [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.4, 1.2.9
>            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.
-
You can reply to this email to add a comment to the issue online.

Reply via email to