Stringlength validation problem for utf-8 chars (Struts 2.1.6)
--------------------------------------------------------------
Key: WW-3119
URL: https://issues.apache.org/struts/browse/WW-3119
Project: Struts 2
Issue Type: Bug
Components: Core Interceptors
Affects Versions: 2.1.6
Environment: Win XP, Eclipes, Tomcat
Reporter: Qunhuan Mei
Priority: Critical
When I try to validate utf-8 chars such as Chinese using Struts 2.1.6, the stringlength validation
appears to have problem. It seems the validation process is not using the number of Chinese
chars before encoding, but rather the number of chars after encoding. The following are the
steps to reproduce the problem:
1. Create a project by importing struts2-blank-2.1.6.war from ...\struts-2.1.6\apps"
and make the login.jsp work with Login.java, e.g. print out the username.length() in setUsername(...)
function.
2. copy the following stringlength validation code into Login-validation.xml:
<field-validator type="stringlength">
<param name="maxLength">4</param>
<param name="trim">true</param>
<message key="fieldNameShouldBeWithinMaxLength"/>
</field-validator>
3. copy the following stringlength error message into package.properties:
fieldNameShouldBeWithinMaxLength=The max number of chars of ${getText(fieldName)} is ${getText(maxLength)}
4. run the login.jsp and type in either "abcd" and "abcde" into username, we can see that
"abcd" does not incur a validation message whereas "abcde" does.
5. now typing 2 Chinese chars, say "世界"into the user name, which should not have any problem
since only 2 chars. However the struts reports the chars received are more than 4. As a matter
of fact, the print out statement in setUsername(...) reports the number of chars is 6.
Qunhuan Mei
BTW: is there any way to access the validation code from struts 2.1.7 (this bug may have been
fixed by the 2.1.7 code)? Thanks.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
|