JSF2에 2 개의 체크 박스 (<h:selectBooleanCheckbox>
)가있는 양식이 있습니다. 적어도 하나는 확인해야합니다. 두 검사도 괜찮지 만 검사를하지 않으면 오류가 발생합니다.JSF2 : 두 개의 종속 확인란의 유효성을 검사하는 방법은 무엇입니까?
이 확인은 아약스에서도 유효합니다. 즉 사용자가 체크/체크하지 않으면 오류 메시지가 사라지거나 나타나야합니다.
그래서 두 체크 박스를 UISelectBoolean
요소에 바인딩하고 각각에 유효성 검사기를 추가했습니다. 유효성 검사기에서 두 번째 체크 상자의 값을 확인하고 false 인 경우 현재 체크 박스도 false로 설정하면 errormessage가 생성됩니다. 매끄러운 좋아 : 다른도 선택하지 않은 상태에서 사용자가 페이지에 확인란을 선택하거나 선택 취소 할 때
if (newValue == false && secondCheckbox.getValue() == false) {
throw new ValidationException();
}
문제는,이 거짓 값은 UISelectBoolean에 모델로 이동하거나 행사하지 않습니다.
시나리오 :
- 은 처음에 모두 체크되지 않은
- 사용자 확인 CheckBox1을합니다.
newValue
은true
이므로 유효하며 UISelectBoolean 및 model로 이동합니다.- 사용자는 확인란 1을 선택 취소합니다. 확인란 2는
false
이고newValue
은false
이므로 예외가 발생합니다. 유효성 검사가 실패했기 때문에이false
값은 모델이나 UISelectBoolean 요소로 전달되지 않습니다. - 사용자 확인 확인란 2.
True
값은 모델 및 UISelectBoolean로 이동합니다. - 사용자는 확인란 2를 선택 취소합니다. Checkbox1은 페이지에서 여전히 선택 취소되었지만 모델 및 UISelectBoolean에는 여전히
true
이 있습니다. 따라서 유효성 검사가 통과되고 오류 메시지가 표시되지 않습니다. 페이지에서 두 확인란의 선택이 해제되어 있지만 model checkbox1에서는 여전히true
입니다.
어떻게 이러한 문제를 해결할 수 있습니까?
''를 사용할 수없는 이유가 무엇입니까? –
BalusC
네, 몰랐습니다 :) 고마워요! – amorfis