Ich habe ein Problem mit Radio gelöst und bekam ein neues. Ich habe meine eigene custome radiogroup Komponente:Wicket lokalen Modell in Radio
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));
}
}
Und FormComponentPanel, wo ich meine radiogroup setzen
public class OperationDatePanel extends FormComponentPanel<OperationDate> {
....
@Override
protected void onInitialize() {
super.onInitialize();
add(new OperationDateRadioGroup("operationDate", getModel()));
}
}
Das Problem: wenn ich die Wahl Radio in radiogroup innere Veränderung (radiogroup) -Komponente und äußeren (Seite) Modell, ich muss nur RadioGroup-Modell ändern und äußeres Modell durch submit ändern.
Das Problem ist nicht sehr klar. Was genau ist "inner" und was "außen" in den Code-Schnipsel? –
Inneres Mittelmodell in FormComponent und Äußeres ist Modell auf der Seite, die FormComponent-Modell als Teil enthält –
Noch ist das Problem für mich nicht sehr klar. Erwägen Sie, weitere Informationen zu Ihrer Frage hinzuzufügen. –