Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
/ HomePage / Computer / Software / Programmierung / Frameworks / Wicket
Wicket verbietet das nicht, es läuft sogar, funktioniert aber nicht wie erwartet. Deshalb unbrauchbar!
Außenliegende Form
<form> <input type="text" ...>... <wicket:container > INNERE FORM ... </wicket:container> </form>
Falsche innere Form
<wicket:panel> <form> <input type="text" ...>... </form> </wicket:panel>
Ein Objekt von FormConponentPanel darf zwar Form Elemente wie TextFields enthalten, aber keine eigene Form. Da dessen onSubmit()
Funktion, die die Elemente einsammelt erst aufgerufen wird, wenn die außen liegende Form abgearbeitet wurde.
Um es richtig zu machen, wird in der inneren Form das <form>-Tag nicht angewendet.
Richtige innere Form
<wicket:panel> <input type="text" ...>... </wicket:panel>
Da man allerdings kein onSubmit()
mehr hat, um auf Änderungen zu reagieren, muss man die folgenden Funktionen unbedingt überschreiben.
class EigeneSubForm extends FormComponentPanel<T> { public EigeneSubForm(String id, IModel<T> model) { super(id, model); ... } // prepare for rendering @Override protected void onBeforeRender() { ... super.onBeforeRender(); } // receiving input @Override protected void convertInput() { ... this.setConvertedInput(data); // Daten an das model vom Typ <T> weiterleiten } }
Jetzt steht dem beliebigem Verschachteln eigener Form-Elemente nichts mehr im Weg.
Der Output in Tests ist nicht wie erwartet, sondern eher folgende Meldung:
log4j:WARN No appenders could be found for logger (org.apache.wicket.Application). log4j:WARN Please initialize the log4j system properly.
Obwohl die log4j.properties
existiert.
Der unkundige geht jetzt bei und sucht bei Tante Google, der wissende grinst und sagt, verschiebe die log4j.properties
von src/test/java
nach src/test/resources
.