... raw input? In my understanding it works by default.

        public final String getValue()
        {
                if (NO_RAW_INPUT.equals(rawInput))
                {
                        return getModelValue();
                }
                else
                {
                        if (getEscapeModelStrings() && rawInput != null)
                        {
                                return 
Strings.escapeMarkup(rawInput).toString();
                        }
                        return rawInput;
                }
        }


**
Martin

2009/5/17 Ian MacLarty <[email protected]>:
> Hi,
>
> If I have a TextField whose model object is a Float, then if the user
> enters an invalid value, say "aaa",  the TextField will remember that
> invalid value and display it when the page is re-rendered.  How would
> you go about getting the same behaviour for a custom FormComponent?
>
> Here is my simple custom FormComponent.
>
> public class MyPanel extends FormComponentPanel {
>    TextField field;
>
>    public MyPanel(String id) {
>        super(id);
>        field = new TextField("f", Float.class);
>        add(field);
>    }
>
>    @Override
>    protected void convertInput() {
>        setConvertedInput(field.getConvertedInput());
>    }
>
>    @Override
>    protected void onBeforeRender() {
>        field.setModel(getModel());
>        super.onBeforeRender();
>    }
> }
>
> <wicket:panel>
>    <input wicket:id="f" type="text" />
> </wicket:panel>
>
> And here is how I use it:
>
> public class HomePage extends WebPage {
>
>    private static final long serialVersionUID = 1L;
>
>    public HomePage(final PageParameters parameters) {
>        CompoundPropertyModel cpModel = new CompoundPropertyModel(this);
>        Form form = new Form("form", cpModel);
>        form.add(new TextField("field1", Float.class));
>        form.add(new MyPanel("field2"));
>        add(form);
>    }
>
>    private Float field1 = 1.0f;
>    private Float field2 = 2.0f;
>
>    public Float getField1() {
>        return field1;
>    }
>
>    public void setField1(Float value) {
>        field1 = value;
>    }
>
>    public Float getField2() {
>        return field2;
>    }
>
>    public void setField2(Float value) {
>        field2 = value;
>    }
> }
>
> <html>
>    <head>
>        <title>Wicket Quickstart Archetype Homepage</title>
>    </head>
>    <body>
>        <form wicket:id="form">
>            <input wicket:id="field1" type="text" />
>            <div wicket:id="field2" />
>            <input type="submit" value="Submit" />
>        </form>
>    </body>
> </html>
>
> If I run this and enter "aaa" for field1 and "bbb" for field2 and
> submit the form, then when the page is re-rendered field1 still has
> "aaa", but field2 has been reset to "2".  I'm pretty sure the problem
> is to do with the call to setModel in MyPanel#onBeforeRender, but I
> don't know how else to link the FormComponent model with the model of
> the TextField inside the FormComponent.
>
> Any help would be greatly appreciated.  I'm using Wicket 1.3.5.
>
> Cheers,
> Ian.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to