Я использую icefaces 1.8.2, и у меня есть HtmlBooleanCheckbox на моей странице, что мне нужно снять галочку при выполнении определенных условий.icefaces htmlselectbooleancheckbox uncheck not working
флажок на странице, как этот
<ice:selectBooleanCheckbox id="accepttermscheckbox"
binding="#{managedBean.termsAgreement}"
validator="#{managedBean.validateAgreement}">
</ice:selectBooleanCheckbox>
и переплетены объект является собственностью управляемого компонента с надлежащей геттер и сеттер
private HtmlSelectBooleanCheckbox termsAgreement;
я могу проверить флажок в коде, валидатор работает отлично, и все, что я делаю с ним, тоже хорошо, но я просто не могу найти способ снять его с сервера.
Я пробовал:
termsAgreement.setValue(Boolean.FALSE)
termsAgreement.setValue(null)
termsAgreement.setSelected(false)
, но ничего не работает. Даже если я его отлаживаю, он показывает значение = null, но когда страница отображает его, все еще отображается флажок. Как только я его проверю, я просто не могу его снять, если не щелкнуть его вручную на странице.
Самое смешное, что
termsAgreement.setValue(Boolean.TRUE)
работает отлично.
Какие-нибудь подсказки, как я могу снять флажок с его серверной стороны на связанном объекте? Заранее спасибо за помощь.
Благодарим вас за ответ.Я не знал, что вам нужно явно написать атрибут value, когда у вас уже есть привязка. Я думал, что привязка делает все это для тебя. В любом случае, когда я сделал setSubmitedValue (false), он также работал, хотя я не уверен, что я должен это делать. Ваше решение, похоже, больше подходит, а мой взгляд больше похож на хак. –
Добро пожаловать! Не используйте также метод setSubmittedValue(). Как вы сказали, многие используют его как хак. Но эти методы (setValue(), setSubmittedValue()) являются частью жизненного цикла JSF. Вот почему я сказал, что вы поймете это более четко, когда будете читать о жизненном цикле JSF. –