2012-05-16 23 views
3

我有一个RadioChoice组件和一个附加模型。无线电选择与布尔字段相关联,因此我必须单选按钮(是/否)。我的问题是,当页面呈现时,无按钮被预选,因为布尔字段被设置为false。有没有办法来防止这种情况的发生,因为我不想有预选的价值。Wicket RadioChoice默认选中

任何想法,不胜感激。

谢谢!

+3

是你的后盾型号的布尔或布尔?我会尝试在页面呈现中使用带有空值的布尔值。 – bert

+0

谢谢,它工作! – user1119371

回答

3

从HTML的角度来看,不建议省略预先选定的无线电值(请参阅http://www.w3.org/TR/html401/interact/forms.html#radio)。这对用户来说也是非常烦人的,因为如果他/她不小心点击了某个电台,那么就无法取消选择电台内的所有值。你可能应该重新考虑你的用户界面 - 是否还有第三个“未知”选项的空间?

+0

必须检查其中一个选项。但是,我们希望确保用户实际选择了一个值,而不是忘记更改预定义的值。 – user1119371

+0

您可以使用布尔(big-B)并将其保留为空吗?或者添加默认选择的“未知”选项,但将其隐藏起来,然后在提交时验证选择已完成。 – artbristol

+0

是的,布尔对象类型解决了这个问题,谢谢! – user1119371

0

因为您的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 
     } 

}); 
0

如果你不使用布尔值,而基元,那么你可以在RadioChoice覆盖isSelected:

@Override 
protected boolean isSelected(Boolean object, int index, String selected) { 
    return false; 
}