我有一个带有附加模型的 RadioChoice 组件。单选选项与布尔字段相关联,因此我必须选择单选按钮(是/否)。我的问题是当页面呈现时没有按钮被预先选择,因为布尔字段设置为 false。有没有办法防止这种情况发生,因为我不想有一个预先选择的值。
任何想法都非常感谢。
谢谢!
我有一个带有附加模型的 RadioChoice 组件。单选选项与布尔字段相关联,因此我必须选择单选按钮(是/否)。我的问题是当页面呈现时没有按钮被预先选择,因为布尔字段设置为 false。有没有办法防止这种情况发生,因为我不想有一个预先选择的值。
任何想法都非常感谢。
谢谢!
从 HTML 的角度来看,不建议省略预先选择的 radio 值(参见http://www.w3.org/TR/html401/interact/forms.html#radio)。这对用户来说也是相当烦人的,因为如果他/她不小心点击了一个单选组中的所有值,就无法取消选择。您可能应该重新考虑您的用户界面 - 是否有第三个“未知”选项的空间?
如果您不使用布尔值,而是使用原语,那么您可以在 RadioChoice 中覆盖 isSelected:
@Override
protected boolean isSelected(Boolean object, int index, String selected) {
return false;
}
因为您的RadioChoice
组件附加了模型;当你写作时,
yourRadioChoice.getValue()
你总是得到你的模型值而不是更新值。为了防止这种情况,您可以使用临时变量。
yourRadioChoice.add(new AjaxFormChoiceComponentUpdatingBehavior () {
private static final long serialVersionUID = 1662824638126944259L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
// you can get current value here and set to your temporary variable
// then use anywhere
}
});