In Wicket, I’d like to subclass TextField form component to add additional markup around the tag.
Why I do not want to create a Panel:
1) I want the web page designer to use the input tag:
<input wicket:id="blah">
2) I don’t want the subclass to lose the FormField semantics in Java, e.g.:
field.setRequired(true);, etc.
I’m fine with hard-coding the wrapping markup in Java. But I’d like this to behave like a FormField in Java.
Any ideas? Looked around for examples, but stumped on this one
Edit:
I’m aware of Borders, but my issue with them is you have to add them in both the markup and in Java. For example:
<div wicket:id="border">
<input type="text" wicket:id="field"/>
</div>
—
FormComponent<Integer> field = new TextField<Integer>("field", new Model(1));
field.setRequired(true);
Border border = new MyBorder("border");
border.add(field);
form.add(border);
This makes the web page designer have to be aware of special markup, and the Java can’t be encapsulated (as a FormField subclass).
Ah, this is what I wanted via IBehavior:
My wrapper behavior (sorry for the Scala syntax):
My subclass:
Original Markup:
Generated markup:
Thanks S.O. for jumpstarting my mind 🙂