我在RadioGroup遇到了一个小问题。我的RadioGroup的值为true和false。我在radiogGroup中使用的Radio类型使用存储true或false的Model。
在Ajax onChange事件中,我想做一些处理,为此,我需要知道我的radioGroup和另一个相同的radioGroup中选择的无线电。问题是getValue()只返回我的POJO的初始值。每当我点击单选按钮更改所选的Radio getValue()时,它仍会返回初始值。
当我保存更改时,我的POJO会获得正确的值。我发现这很离奇,我花了几个小时试图找出我所缺少的东西。
答案 0 :(得分:3)
如果您只需要处理后端的某些数据,我建议您覆盖wantOnSelectionChangedNotifications()
对象的RadioGroup
方法,然后使用onSelectionChanged()
方法(再次来自RadioGroup)处理基于您在方法中作为参数收到的newSelection
女巫的逻辑。
如果您想要更新界面,则需要使用AjaxFormChoiceComponentUpdatingBehavior
女巫,以便您访问AjaxRequestTarget
,以便更新视图。
答案 1 :(得分:1)
使用AjaxFormChoiceComponentUpdatingBehavior
代替AjaxFormComponentUpdatingBehavior
。
来自javadoc:
public abstract class AjaxFormChoiceComponentUpdatingBehavior extends AjaxFormComponentUpdatingBehavior
这是一个Ajax组件更新行为,适用于html中不是一个组件的选项/组,但很多。
将普通的AjaxFormComponentUpdatingBehavior用于普通的单个组件字段
答案 2 :(得分:0)
您需要确保Checkbox中的Value(状态)被推送到模型。看看AjaxFormComponentUpdatingBehavior。见
http://www.jroller.com/karthikg/entry/wicket_and_ajax
他们对此有所解释。免责声明:我无法访问我已经完成此类操作的来源,并且仅根据我记得的内容编写此内容
答案 3 :(得分:0)
在问题中加入一些代码,以便我们提供帮助。对我来说,解决方案是processInput()
方法。在RadioGroup上调用它来更新附加到RadioGroup的模型。我是这样做的:
我的样本电台:
private Radio myRadio() {
Radio localmyRadio = new Radio("myRadio", Model.of(someValue), myRadioGroup);
localmyRadio.add(new AjaxEventBehavior("click") {
@Override
protected void onEvent(AjaxRequestTarget target) {
myRadioGroup.processInput(); //updates the model of the radiogroup
//do some stuff
target.appendJavaScript("$(\".jq-ui-button\").button();");
}
});
return localmyRadio ;
}
我的样本RadioGroup:
private RadioGroup myRadioGroup() {
RadioGroup localmyRadioGroup = new RadioGroup("myRadioGroup", selectedRadioModel);
localmyRadioGroup.setOutputMarkupId(Boolean.TRUE);
return localmyRadioGroup;
}
这样当我点击无线电时,RadioGroup的模型获得变量someValue
的值。从RadioGroup模型中读取所选值。在这种情况下,它是变量selectedRadioModel
的值。