I realize my last post was a mess so here is an attempt to summarize it:

I'm trying to turn
<input wicket:id="name"/>
which renders as
<input name="name" id="some_generated_wicked_id"/>
to something that will render like this:
<label for="generated_id">label</label> * <-FormComponentLabel*
<input name="name" id="generated_id"/>* <-Original FormComponent*
<div></div> *<-ComponentFeedbackPanel*

I managed to accomplish this using a panel, but its still not perfect.
Here is what I have so far:

The panel code:

public class FormComponentLabelAndFeedbackWrapper<T> extends Panel {

    public static final String COMP_ID = "comp";

    public FormComponentLabelAndFeedbackWrapper(String id, FormComponent<T>
comp) {
        super(id);

        if (!COMP_ID.equals(comp.getId())) {
            throw new IllegalArgumentException("formcomponent id must be " +
COMP_ID);
        }
        setDefaultModel(comp.getModel());
        add(new FormComponentLabel("compLabel", comp));
        add(comp);
        add(new ComponentFeedbackPanel("compFeedback", comp));
    }

    @Override
    protected void onComponentTag(ComponentTag tag) {
        tag.setName("div");
        super.onComponentTag(tag);
    }
}

Associated markup:
<wicket:panel>
    <label wicket:id="compLabel">[label for]</label>
    <input wicket:id="comp"></input>
    <div wicket:id="compFeedback">[feedback for comp]</div>
</wicket:panel>

example of use in code:
form.add(new FormComponentLabelAndFeedbackWrapper<String>("name", new
TextField<String>(FormComponentLabelAndFeedbackWrapper.COMP_ID, new
PropertyModel<String>(user, "firstName"))));

The problem is that I can only use form components that are related to
<input> tag because if I use <wicket:container> instead of <input> the form
component onComponentTag will throw an exception when checking the tag.

-Is there anyway to somehow use <wicket:container> and change the tag
somehow before the form component onComponentTag method is called?
-This feels kind of hacky, can anyone suggest another method to achieve the
original goal?

Reply via email to