Wicket:CheckBoxMultipleChoice不保存模型对象中的值

时间:2014-06-20 13:39:42

标签: java apache wicket wicket-1.5

我的代码看起来像这样

HTML

  

< div wicket:id =“metroEthernetChildchkLeft”>

java代码

在构造函数中初始化CheckBoxMultipleChoice,然后使用setter方法设置list和model的值

class <some name>

   private CheckBoxMultipleChoice<String> metroEthernetChildchkLeft;

   <constructor>()
    {    metroEthernetChildchkLeft = new CheckBoxMultipleChoice<String>("metroEthernetChildchkLeft");
         metroEthernetChildchkLeft.setMarkupId("metroEthernetChildchkLeftId");
         metroEthernetChildchkLeft.add(AttributeModifier.prepend("load", "javascript:addMargin(metroEthernetChildchkLeftId);"));
         metroEthernetChildchkLeft.setEnabled(false);
         commentTechSpeedMetroEthernetListView.add(metroEthernetChildchkLeft);

          add(new IndicatingAjaxButton("submitChoiceCmd")
            {
               private static final long serialVersionUID = 1L;

               @Override
               protected void onSubmit(AjaxRequestTarget target, Form< ? > form)
               {
               //// >>>>>>>> updated model value is not coming here <<<<<<
                meSpeedSelectLeft = (ArrayList<String>) metaCommentTechSpeedBean.getMeSpeedSelectLeft();
               });
    }    

    method()
    {
        meSpeedSelectLeft = (ArrayList<String>) metaCommentTechSpeedBean.getMeSpeedSelectLeft();

        leasedLineChildDivLeft.setDefaultModel(new PropertyModel(metaCommentTechSpeedBean, "llSpeedSelectLeft"));
        leasedLineChildDivLeft.setChoices(llSpeedListLeft);
    }

我无法在提交方法{位于构造函数}中获取选中的值[所选复选框的数组列表]

更新:

<div wicket:id="metroEthernetChildchkLeft"></div>

  public class MetaCommentTechSpeedChoiceForm extends OForm<MetaCommentTechSpeedBean>
   {

        private CheckBoxMultipleChoice<String> metroEthernetChildchkLeft;

  public MetaCommentTechSpeedChoiceForm(String id)
    {    

          super(id);
                metroEthernetChildchkLeft = new CheckBoxMultipleChoice<String>("metroEthernetChildchkLeft");
                metroEthernetChildchkLeft.setMarkupId("metroEthernetChildchkLeftId");
                metroEthernetChildchkLeft.add(AttributeModifier.prepend("load", "javascript:addMargin(metroEthernetChildchkLeftId);"));
                metroEthernetChildchkLeft.setEnabled(false);
                commentTechSpeedMetroEthernetListView.add(metroEthernetChildchkLeft);

                add(new IndicatingAjaxButton("submitChoiceCmd")
                {
                    private static final long serialVersionUID = 1L;

                    @Override
                    protected void onSubmit(AjaxRequestTarget target, Form< ? > form)
                    {

                            meSpeedSelectLeft = (ArrayList<String>) metaCommentTechSpeedBean.getMeSpeedSelectLeft(); //// >>>>>>>> updated model value is not coming here <<<<<<
                    });
    }    

    public void formFunction(final MetaCommentCreationBean metaCommentCreationBean, final Component basicInfoContainer, final Component techSpeedSettingsContainer)
    {
            meSpeedSelectLeft = (ArrayList<String>) metaCommentTechSpeedBean.getMeSpeedSelectLeft();
            leasedLineChildDivLeft.setDefaultModel(new PropertyModel(metaCommentTechSpeedBean, "llSpeedSelectLeft"));
            leasedLineChildDivLeft.setChoices(llSpeedListLeft);
    }

1 个答案:

答案 0 :(得分:1)

由于此行而发生问题

metroEthernetChildchkLeft.setEnabled(false);

我禁用了控件并使用javascript在前端启用它。

Wicket仍然认为控件已被禁用,因此不会更新模型对象。