RadioGroup getValue不返回正确的选定值

时间:2010-05-08 18:30:14

标签: wicket

我在RadioGroup遇到了一个小问题。我的RadioGroup的值为true和false。我在radiogGroup中使用的Radio类型使用存储true或false的Model。

在Ajax onChange事件中,我想做一些处理,为此,我需要知道我的radioGroup和另一个相同的radioGroup中选择的无线电。问题是getValue()只返回我的POJO的初始值。每当我点击单选按钮更改所选的Radio getValue()时,它仍会返回初始值。

当我保存更改时,我的POJO会获得正确的值。我发现这很离奇,我花了几个小时试图找出我所缺少的东西。

4 个答案:

答案 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的值。

相关问题