2013-02-28 90 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