java - radio 中的 Wicket 口本地模型

标签 java wicket

我已经解决了 radio 的一个问题并得到了新的问题。 我有自己的客户 radioGroup 组件:

public class OperationDateRadioGroup extends RadioGroup<OperationDate> {

    private LocalDatePicker date;
    private LocalDatePicker from;
    private LocalDatePicker to;
    public OperationDateRadioGroup(String id, IModel<OperationDate> model) {
        super(id, model);
    }

    @Override
    protected void onInitialize() {
        super.onInitialize();
        operationDateType = getModelObject().getOperationDateType();

        date = new LocalDatePicker("date", new CompoundPropertyModel<>(getModel()).bind("date")) {

            @Override
            protected void onConfigure() {
                super.onConfigure();
                setEnabled(OperationDateRadioGroup.this.getModelObject().getOperationDateType() == OperationDateType.DATE);
            }
        };
        from = new LocalDatePicker("interval.from", new CompoundPropertyModel<>(getModel()).bind("interval.from")) {

            @Override
            protected void onConfigure() {
                super.onConfigure();
                setEnabled(OperationDateRadioGroup.this.getModelObject().getOperationDateType() == OperationDateType.INTERVAL);
            }
        };
        to = new LocalDatePicker("interval.to", new CompoundPropertyModel<>(getModel()).bind("interval.to")) {

            @Override
            protected void onConfigure() {
                super.onConfigure();
                setEnabled(OperationDateRadioGroup.this.getModelObject().getOperationDateType() == OperationDateType.INTERVAL);
            }
        };

        OperationDate operationDate = new OperationDate();
        operationDate.setOperationDateType(OperationDateType.DATE);
        Radio dateType = new Radio<>("dateType", Model.of(operationDate));
        OperationDate operationInterval = new OperationDate();
        operationInterval.setOperationDateType(OperationDateType.INTERVAL);
        Radio intervalType = new Radio<>("intervalType", Model.of(operationInterval));

        dateType.add(new AjaxFormSubmitBehavior("onchange") {
            private static final long serialVersionUID = -6001312248222404593L;

            @Override
            protected void onEvent(AjaxRequestTarget ajaxRequestTarget) {
                ajaxRequestTarget.add(date, from, to);
            }
        });

        intervalType.add(new AjaxEventBehavior("onchange") {
            private static final long serialVersionUID = -6001312248222404593L;

            @Override
            protected void onEvent(AjaxRequestTarget ajaxRequestTarget) {
                ajaxRequestTarget.add(date, from, to);
            }
        });

        add(dateType, intervalType);
        add(date.setOutputMarkupId(true));
        add(from.setOutputMarkupId(true));
        add(to.setOutputMarkupId(true));
        add(new AjaxFormChoiceComponentUpdatingBehavior() {
            @Override
            protected void onUpdate(AjaxRequestTarget ajaxRequestTarget) {

            }
        });
        getForm().add(new DateIntervalFormValidator(this, date, from, to));
    }
}

还有我放置 radioGroup 的 FormComponentPanel

public class OperationDatePanel extends FormComponentPanel<OperationDate> {
 ....
    @Override
    protected void onInitialize() {
        super.onInitialize();
        add(new OperationDateRadioGroup("operationDate", getModel()));
    }
}

问题:当我在 radioGroup 中选择 radio 更改内部(radioGroup)组件和外部(Page)模型时,我只需要更改 radioGroup 模型并通过提交更改外部模型。

最佳答案

我认为,这个问题是因为您将 outer(Page) 模型传递到 OperationDateRadioGroup 构造函数

add(new OperationDateRadioGroup("operationDate", /*Here you are passing PAGE model*/ getModel()));

它适用于此页面模型。您需要将任何其他模型传递给构造函数并使用此模型..

关于java - radio 中的 Wicket 口本地模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45712848/

相关文章:

java - 在 java 中使用 Apache Spark 连接器从 Cassandra 检索数据时出错

javascript - 想要在wicket中调用js方法而不使用ajax的onclick或onsubmit按钮

javascript - 如何在 Wicket FeedbackPanel 的 info()/error() 方法上调用 Javascript 方法?

javascript - 如何捕获 wicket jquery ui spinner 的 onclick

java - 从 Wicket 访问 SPRING_SECURITY_LAST_EXCEPTION

java - 将数组列表转换为 html 表

java - 为什么 Maven 不从测试类生成源代码?

java - JUnit EasyMock 意外方法调用预期 1 实际 0

java - 通过语音命令启动应用程序 (android)

java - 为什么 PageableListView 没有没有模型或列表的构造函数