Eine Möglichkeit, dies zu lösen wäre, dass Feld ‚besondere‘ zu setzen mit ‚besonderem‘ Link zu einem zweiten Form
und CSS dann visuell verwenden, um das ‚besondere‘ Feld wie es zu positionieren ist innerhalb der Haupt Form
.
Etwas wie folgt aus:
Form<Void> mainForm = new Form<Void>("main-form") {
@Override
protected void onSubmit() {
super.onSubmit();
}
};
add(mainForm);
// ... populate the main form
Form<Void> secondForm = new Form<Void>("second-form");
add(secondForm);
final Model<String> specialModel = Model.of();
secondForm.add(new TextField<>("special-field", specialModel));
secondForm.add(new AjaxButton("special-button") {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
// ... process the special field value
}
});
Und im Markup, wie üblich:
<form wicket:id="main-form">
... main form content
</form>
<form wicket:id="second-form">
<label>Special field: <input class="special-field" wicket:id="special-field"></label>
<button wicket:id="special-button">Special button</button>
</form>
Und dann Stil, dass .special-field
Klasse mit position: absolute; top: ...
oder so ähnlich.
Die Lösung ist nicht sehr elegant, es ist eher ein Hack. Es wird etwas Verwirrung für eine Person schaffen, die das später lesen müsste. Aber es kann funktionieren, wenn der Trick mit CSS möglich ist.
Hallo Martin, Ich versuchte paar Varianten, aber immer noch konnte es nicht funktionieren. Könnten Sie ein Beispiel einfügen, wie es gemacht werden kann? –
Ein Beispiel hinzugefügt. –
Martin, danke, danke, danke! :) musste nur die $ mit jQuery ersetzen und es funktioniert wie ein Charme. –