2013-02-10 18 views
6

tôi viết trang JSF, đòi hỏi người dùng nhấp vào một hộp kiểm (tương tự như việc chấp nhận thỏa thuận cấp phép) Tôi đã mã sau tại chỗ:JSF selectBooleanCheckbox cần = true không xác nhận nếu hộp kiểm được chọn

<h:selectBooleanCheckbox value="#{checkBoxManagedBean.checkBoxValue}" required="true" id="jsfcheckBox" > 
</h:selectBooleanCheckbox> 
<h:outputLabel value="accept rule label" for="jsfcheckBox" /> 
<h:message for="jsfcheckBox"/> 
<br/> 
<h:commandButton id="loginButton" value="Submit" 
    action="#{checkBoxManagedBean.testAction}"/> 

Tôi đang đặt yêu cầu = true, nhưng không có xác thực nào xảy ra cho hộp kiểm. Tôi không thấy bất kỳ thông báo nào được hiển thị trong trang cho hộp kiểm.

Tôi đã thử f: validateRequired, ngay cả việc này không hoạt động.

<h:selectBooleanCheckbox value="#{checkBoxManagedBean.checkBoxValue}" required="true" id="jsfcheckBox" > 
     <f:validateRequired for="jsfcheckBox"></f:validateRequired> 
     </h:selectBooleanCheckbox> 
     <h:outputLabel value="CheckBox label" for="jsfcheckBox" /> 
     <h:message for="jsfcheckBox"/> 
     <br/> 
     <h:commandButton id="loginButton" value="Submit" 
        action="#{checkBoxManagedBean.testAction}"/> 

Trang không có bất kỳ vấn đề thời gian, hộp kiểm, mọi thứ hiển thị, kỳ vọng của tôi nhận được thông báo xác thực, khi hộp kiểm không được chọn trước khi nhấn nút.

BTW, có phải đặc tả JSF được yêu cầu = true không thực sự thực hiện bất kỳ xác thực nào không ??

+0

required = true là xác thực xem giá trị có trống không, cả 'true' và 'false' không phải là giá trị trống, do đó xác thực sẽ vượt qua. Nếu bạn muốn hộp kiểm được chọn, thì một loại trình xác nhận khác sẽ được sử dụng. – Osw

Trả lời

17

required=true cho trường nhập jsf có nghĩa là giá trị của trường không được để trống hoặc không. Điều này có vẻ giống như lỗi trong việc triển khai jsf, nhưng khi không kiểm tra số h:selectBooleanCheckbox, giá trị của nó là false và không trống hoặc null. Vì vậy, điều này không kích hoạt xác nhận. BalusC has written a nice post about this here. Ông đã thực hiện một trình duyệt tính hợp lệ để giúp bạn khắc phục tình trạng này. Cảm ơn BalusC.

+3

Nó cũng có trong OmniFaces: http://showcase.omnifaces.org/validators/RequiredCheckboxValidator – BalusC