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]