2013-02-28 58 views
5

我是Struts2和OGNL的新手,正在制作一个带有注册页面的简单Web应用程序。有两个字段,passwordrepassword(重新输入密码),并使用验证框架,我想验证两个密码是否匹配(我知道我可以用JavaScript轻松完成)。这是我到目前为止。所有的现场验证器工作正常。这是我的第一个非现场验证器,我只是无法让它工作。Struts 2 OGNL - 比较validation.xml中的两个字符串值

<validator type="expression"> 
    <param name="expression">${password}!=${repassword}</param> 
    <message>Passwords must match.</message> 
</validator> 

${password}!=${repassword} 

,并试图都要没有

password!=repassword 

OGNL的标签。

回答

3

expression验证程序是一个非字段级验证程序。使用fieldexpression验证器,它是一个字段级验证器,并使用OGNL表达式进行验证。它必须等于(==)检查。

<field name="password"> 
    <field-validator type="fieldexpression"> 
    <param name="expression"><![CDATA[password == repassword]]></param> 
    <message>Passwords must match.</message> 
    </field-validator> 
</field> 

验证程序expression添加了操作错误。验证器fieldexpression添加字段错误。

+0

工作正常!谢谢。我仍然想知道如何使它成为表达验证器。上面的两个链接似乎只是用不同的词语来描述相同的功能。 – BLam85 2013-03-01 17:54:23

+0

@ BLam85:稍微更新了我的答案。您可以使用表达式验证器,但要查看JSP中的错误,您需要使用''标签。 – 2013-03-02 11:03:45

2

尝试

%{password == repassword} 

验证器检查以布尔OGNL表达式两者是相等的。

+1

没有按预期工作。无论密码是否匹配,验证器都会失败。 (即行动返回输入)但是,从来没有显示的消息,我看到下面的警告在控制台'2013年3月1日下午12时59分28秒com.opensymphony.xwork2.util.logging.commons.CommonsLogger警告 警告:尝试获取布尔值时得到的结果为null。 – BLam85 2013-03-01 18:03:19

+0

如果值匹配,则此OGNL表达式的计算结果为true。 – 2013-03-01 18:15:03