У меня есть h:selectBooleanCheckbox
, но он всегда проходит 'false'
до validator.
.h: selectBooleanCheckbox всегда передает false в валидатор
<h:panelGroup id="tncPanel">
<label>
<h:selectBooleanCheckbox id="tncSelection" value="#{businessBean.tncSelection}">
<f:validator validatorId="checkboxValidator"/>
<f:attribute name="label" value="Please agree terms and conditions."/>
</h:selectBooleanCheckbox>
I have read and agreed to all the
<a href="#" data-toggle="modal" data-target="#modal-term-and-conditions">
Terms and Conditions.
</a>
</label>
</h:panelGroup>
<h:panelGroup id="buttonPanel">
<h:commandLink id="nextButton" action="#{businessBean.goNext}">
Submit
</h:commandLink>
</h:panelGroup>
Почему я должен panelGroup
здесь есть, на основе логики в верхней части страницы, у меня есть логика для отображения/не в button
и checkbox
Это мой Validator
.
@FacesValidator("checkboxValidator")
public class CheckboxValidator implements Validator {
private static final String DEFAULT_LABEL = "Please confirm the address.";
@Override
public void validate(FacesContext context, UIComponent component, Object value){
String checkBoxValue = String.valueOf(((HtmlSelectBooleanCheckbox) component).getSubmittedValue());
System.out.println("checkBoxValue " + checkBoxValue);
System.out.println("value2: " + value);
String label = String.valueOf(component.getAttributes().get("label"));
if ("null".equals(label)) {
label = DEFAULT_LABEL;
}
if("false".equalsIgnoreCase(checkBoxValue)){
FacesMessage msg = new FacesMessage(null, label);
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
Validator sysout
всегда печатает checkBoxValue false
UPDATE
После комментария на Balusc, я добавляю еще sysout
непосредственно параметра value
печати. Но все же это печатает как value2: false
.
@BalusC Я не совсем понимаю, что вы упомянули. Я новичок в JSF. –
@BalusC Это существующий код. Не знаете, как они это сделали. но я также стараюсь так же теперь: «HtmlSelectBooleanCheckbox checkbox = (HtmlSelectBooleanCheckbox)»; «Все еще это« false » –
Ваш код совершенно легален. У вас есть слушатели, зарегистрированные в вашем проекте, какие-либо классы, которые «внедряют javax.faces.event.PhaseListener»? Эти слушатели могут работать до проверки флажка проверки и изменения флажка – YouYou