2013-02-28 22 views
5

Tôi mới dùng Struts2 và OGNL và đang tạo một ứng dụng web đơn giản với trang đăng ký. Có hai trường, passwordrepassword (để nhập lại mật khẩu) và sử dụng khung xác thực tôi muốn xác thực rằng hai mật khẩu khớp nhau (tôi biết rằng tôi có thể làm điều đó dễ dàng với JavaScript). Đây là những gì tôi đã có cho đến nay. Tất cả các trình xác thực trường đang hoạt động tốt. Đây là trình xác thực phi trường đầu tiên của tôi và tôi không thể làm cho nó hoạt động được.Struts 2 OGNL - So sánh hai giá trị chuỗi trong validation.xml

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

Tôi đã thử cả với

${password}!=${repassword} 

và không

password!=repassword 

các thẻ OGNL.

Trả lời

3

Trình xác thực expression là trình xác thực cấp không thuộc trường. Sử dụng trình xác thực fieldexpression là trình xác thực cấp trường và xác thực bằng biểu thức OGNL. Và nó phải bằng (==) kiểm tra.

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

Trình xác thực expression thêm lỗi hành động. Trình xác thực fieldexpression thêm các lỗi trường.

+0

Đã hoạt động! Cảm ơn bạn. Tôi vẫn muốn hiểu làm thế nào để làm cho nó hoạt động như một trình xác nhận biểu thức. Hai liên kết ở trên dường như mô tả cùng một chức năng chỉ bằng các từ khác nhau. – BLam85

+0

@ BLam85: Đã cập nhật câu trả lời của tôi một chút. Bạn có thể sử dụng trình xác nhận biểu thức nhưng để xem các lỗi trong JSP, bạn cần sử dụng thẻ ''. –

2

thử

%{password == repassword} 

Các kiểm tra validator để boolean biểu OGNL rằng cả hai đều bình đẳng.

+1

Điều đó không hoạt động ... như mong đợi. Trình xác thực không thành công hay không mật khẩu đã khớp. (tức là hành động trả về đầu vào) Tuy nhiên, thông báo không bao giờ được hiển thị và tôi thấy cảnh báo sau đây trong bảng điều khiển 'Mar 1, 2013 12:59:28 PM com.opensymphony.xwork2.util.logging.commons.CommonsLogger cảnh báo CẢNH BÁO: Có kết quả của null khi cố gắng nhận Boolean.' – BLam85

+0

Biểu thức OGNL này đánh giá là true nếu các giá trị khớp nhau. –