No.. the field name is "rawInput":

rawInputField = FormComponent.class.getDeclaredField("rawInput");

**
Martin

2009/9/17 Sam Zilverberg <[email protected]>:
> I'd rather use some other method than mine, because with mine the validation
> of input is done twice when uploading.
> first on the uploaded file, and then another time on the textarea when
> pressing the wizard's next button.
>
> I tried replacing my "fixup" with this one but got a big fat
> java.lang.NoSuchFieldException
> on getDeclaredField( name) line in the code.
> I got this a couple of times using different names such as
> TextArea.class.getSimpleName() and "serials" (the wicket id for the
> textarea).
>
> Any ideas on what name I should be using?
>
> heres some code and the markup for the wizard page with the upload
> form/textarea :
>
> <wicket:panel>
>    <table>
>        <tr>
>            <td>
>              <form wicket:id="simpleUpload">
>              <fieldset>
>                <label for="upload">File</label>
>                <input wicket:id="fileInput" id="upload" type="file" />
>                <button wicket:id="uploadButton" ><span
> wicket:id="uploadLabel">upload</span></button>
>              </fieldset>
>              </form>
>            </td>
>            <td>
>                <wicket:message key="serials.textareaInfo">info
> message</wicket:message>  <br/>
>                <textarea wicket:id="serials"></textarea>
>            </td>
>        </tr>
>    </table>
>
> i'm using <button wicket:id="uploadButton" > in the markup instead of <input
> type="submit"> as per the example
> because pressing the latter button causes the whole wizard page to validate,
> including the text area which is usualy empty
> in the case of file upload.
>
> Button uploadButton = new Button("uploadButton") {
>                   �...@override
>                    public void onSubmit() {
>                        final FileUpload upload =
> fileUploadField.getFileUpload();
>                        if (upload != null) {
>                            String uploadedContent = new
> String(upload.getBytes());
>                            try {
>                                Field f =
> FormComponent.class.getDeclaredField(TextArea.class.getSimpleName());
>                                f.setAccessible(true);
>                                f.set(textArea, uploadedContent);
>                            } catch (Exception e) {
>                                e.printStackTrace();
>                            }
>                        }
>                    }
> }
>
> On Thu, Sep 17, 2009 at 12:29 AM, Martin Makundi <
> [email protected]> wrote:
>
>> Ah.. forgot that crucial part, the reflection:
>>
>>  public static <T extends FormComponent<?>> void fakeRawInput(T
>> formComponent, String value) {
>>    try {
>>      rawInputField.set(formComponent, value);
>>     } catch (Exception e) {
>>      Utils.errorLog(MarkupUtils.class, "Fatal Error: Form field
>> access failed.", e);
>>    }
>>  }
>>
>> where
>>      rawInputField = FormComponent.class.getDeclaredField("rawInput");
>>      rawInputField.setAccessible(true);
>>
>>
>> 2009/9/17 Martin Makundi <[email protected]>:
>> > Hi!
>> >
>> >> I currently solved this problem by "filtering" the input from the
>> uploaded
>> >> file and creating a correct object model (Set<String>)  out of it,
>> >> then setting the modelObject of the textarea to be this filtered one.
>> >
>> > Good, so you got the upload part working.
>> >
>> > By reflection I mean that instead of setting model object you could do
>> > this, if necessary:
>> >
>> >  public static <T extends FormComponent<?>> void fakeRawInput(T
>> > formComponent, T existingComponent) {
>> >    try {
>> >      String rawInput = (String) rawInputField.get(existingComponent);
>> >      fakeRawInput(formComponent, rawInput);
>> >    } catch (Exception e) {
>> >      Utils.errorLog(MarkupUtils.class, "Fatal Error: Form field
>> > access failed.", e);
>> >    }
>> >  }
>> >
>> > In this way your modelObject state does not change as compared to:
>> >
>> >> simply using setModelObject( (Set<String>) uploadedContent) ?
>> >
>> > But if you can change the model that's definitely cleaner.
>> >
>> > **
>> > Martin
>> >
>>
>

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

Reply via email to