jsp:<s:form id="userForm" action="/user/register.do" validate="false">
<table width="200" border="0">
<tbody>
<tr>
<td>
<s:textfield name="userName"  label="User Name"></s:textfield>
</td>
</tr>
<tr>
<td>
<s:password name="password" label="Password" />
</td>
</tr>
<tr>
<td>
<s:password label="Confirm Password" name="cfmPassword" />
</td>
</tr>
<tr>
<td>
<s:textfield name="nickname" label="Nickname" />
</td>
</tr>
<tr>
<td>
<s:textfield name="email" label="Email" />
</td>
</tr>
<tr>
<td>
<s:select label="City" name="cityId" list="cities" listKey="id"
listValue="cityName" />
</td>
</tr>
<tr>
<td>
<s:textarea name="description" rows="10" cols="20"
label="Self-Description" />
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
&nbsp
<s:submit label="Submit User Info" />
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
</tr>
</tbody>
</table>
</s:form>
validation.xml:<?xml version="1.0" encoding="GBK"?>
<!-- 指定校验配置文件的DTD信息 -->
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.02//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<!-- 校验文件的根元素 -->
<validators>
<field name="userName">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>You must type user name</message>
        </field-validator>
        <field-validator type="regex">
            <param name="expression"><![CDATA[(\w{4,10})]]></param>
            <message>You user name length should be 4 to 10</message>
        </field-validator>
</field>


<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>You must type password</message>
</field-validator>
</field> <field name="cfmPassword">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>You must type confirm password</message>
</field-validator>
<!--<field-validator type="fieldexpression">
<param name="expression"><![CDATA[(password==cfmPassword)]]></param>
<message>Confirm passoword must be equal to password</message>
</field-validator>
--></field>

<validator type="expression"> 
<param name="expression">password.equals(cfmPassword)</param>
<message>Confirm passoword must be equal to password</message>
</validator>

<!--<validator type="expression">
       <param name="expression"><![CDATA[password == cfmPassord]]></param>
       <message>Password and confirm password do not match!</message>
   </validator>

--><field name="nickname">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>You must type nickname</message>
</field-validator>
</field>

<field name="email">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>You must type email</message>
</field-validator>
<field-validator type="email">
<message>Your email is not a valid email address</message>
</field-validator>
</field>

<field name="cityId">
<field-validator type="fieldexpression">
<param name="expression">(city!=null)</param>
<message>You must select a city</message>
</field-validator>
</field>



<field name="description">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>You must type self description</message>
</field-validator>
</field>
   
</validators>换成下面的写法也不生效: <validator type="expression"> 
<param name="expression">password==cfmPassword</param>
<message>Confirm passoword must be equal to password</message>
</validator>
奇了怪了。

解决方案 »

  1.   

    java 和 validation 的命名要统一。
      

  2.   

    问题肯定解决:
    <field name="password">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>You must type password</message>
        </field-validator>
    </field><field name="cfmPassword">
        <field-validator type="requiredstring" short-circuit="true">
            <param name="trim">true</param>
            <message>You must type confirm password</message>
        </field-validator>
        <field-validator type="fieldexpression">
            <param name="expression"><![CDATA[!(!password.equals("") && !password.equals(cfmPassword))]]></param>
            <message>Confirm passoword must be equal to password</message>
        </field-validator>
    </field>
      

  3.   

    <validator type="fieldexpression"> 
            <param name="expression">password==cfmPassword</param>
            <message>Confirm passoword must be equal to password</message>
        </validator>