[ https://issues.apache.org/jira/browse/WICKET-6002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14962240#comment-14962240 ]
Martin Grigorov commented on WICKET-6002: ----------------------------------------- How to run the application in my IDE? If you use non-standard ways to do that then please add it in the steps to reproduce! I'm wasting my spare time trying to figure out what to do with this rather big application. Trying to start id.ac.itb.sigit.pengenalanpola.PlatNomorApp as SpringBoot app fails with: Exception in thread "main" java.lang.IllegalStateException: Failed to execute CommandLineRunner at org.springframework.boot.SpringApplication.runCommandLineRunners(SpringApplication.java:676) at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:691) at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:139) at id.ac.itb.sigit.pengenalanpola.PlatNomorApp.main(PlatNomorApp.java:32) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) Caused by: java.lang.NullPointerException at org.bytedeco.javacpp.helper.opencv_core$AbstractArray.createIndexer(opencv_core.java:175) at org.bytedeco.javacpp.helper.opencv_core$AbstractArray.createIndexer(opencv_core.java:165) at id.ac.itb.sigit.pengenalanpola.ChainCodeWhiteConverter.getChainCode(ChainCodeWhiteConverter.java:49) at id.ac.itb.sigit.pengenalanpola.PlatNomorApp.run(PlatNomorApp.java:58) at org.springframework.boot.SpringApplication.runCommandLineRunners(SpringApplication.java:673) ... 9 more Also please don't scratch your comments but delete them and leave only the latest version. It is hard to follow you this way. Now on the issue itself: Spring Boot uses Servlet 3.0 MultipartConfig by default. Wicket 7.0.0 supports it partially - there is no support for progress notifications. I'd recommend to use (exclude = MultipartAutoConfiguration.class) in Wicket applications. > FileUploadField makes form-component models become null on submit > ----------------------------------------------------------------- > > Key: WICKET-6002 > URL: https://issues.apache.org/jira/browse/WICKET-6002 > Project: Wicket > Issue Type: Bug > Components: wicket > Affects Versions: 7.0.0 > Environment: Spring Boot 1.2.6, wicket-bootstrap 0.10.3, Tomcat 8 > Reporter: Hendy Irawan > Assignee: Martin Grigorov > > First form: (not working) > {code:java} > final Form<Void> form = new Form<>("form"); > final ListModel<FileUpload> filesModel = new ListModel<>(); > final FileUploadField fileFld = new FileUploadField("fileFld", > filesModel); > form.add(fileFld); > final Model<GrayscaleMode> modeImageModel = new > Model<>(GrayscaleMode.WHITE_ON_BLACK); > final RadioChoice<GrayscaleMode> modeImage = new > RadioChoice<>("modeImage", > modeImageModel, ImmutableList.copyOf(GrayscaleMode.values())); > form.add(modeImage); > form.add(new AjaxButton("loadBtn2") { > @Override > protected void onAfterSubmit(AjaxRequestTarget target, Form<?> > form) { > super.onAfterSubmit(target, form); > log.info("modeimageModel: {}", modeImageModel.getObject()); > } > }); > add(form); > {code} > Second form: exactly same as above, but remove the fileUploadField. > {code:java} > final Form<Void> form2 = new Form<>("form2"); > final Model<GrayscaleMode> modeImage2Model = new > Model<>(GrayscaleMode.WHITE_ON_BLACK); > final RadioChoice<GrayscaleMode> modeImage2 = new RadioChoice<>("modeImage2", > modeImage2Model, ImmutableList.copyOf(GrayscaleMode.values())); > form2.add(modeImage2); > form2.add(new AjaxButton("loadBtn3") { > @Override > protected void onAfterSubmit(AjaxRequestTarget target, Form<?> form) { > super.onAfterSubmit(target, form); > log.info("modeimageModel: {}", modeImage2Model.getObject()); > } > }); > add(form2); > {code} > Markup: > {code} > <form class="col-md-3" wicket:id="form"> > <p><strong>Original</strong></p> > <div> > <input type="file" wicket:id="fileFld" accept="image/*"/> > <p> > <label>Mode</label>: > <span wicket:id="modeImage"></span> > </p> > <button class="button" wicket:id="loadBtn2">Load Biasa</button> > </div> > </form> > <form class="col-md-3" wicket:id="form2"> > <p><strong>Original</strong></p> > <div> > <p> > <label>Mode</label>: > <span wicket:id="modeImage2"></span> > </p> > <button class="button" wicket:id="loadBtn3">Load 3</button> > </div> > </form> > {code} > With the non-working form, the request is multipart. This seems to cause all > form components' model.getObject() become null. > {noformat} > POST > /chaincode?0-1.IBehaviorListener.0-form-loadBtn2&wicket-ajax=true&wicket-ajax-baseurl=chaincode%3F0 > HTTP/1.1 > Host: localhost:8080 > Connection: keep-alive > Content-Length: 576 > Cache-Control: max-age=0 > Accept: > text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 > Origin: http://localhost:8080 > Upgrade-Insecure-Requests: 1 > User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 > (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 > Content-Type: multipart/form-data; > boundary=----WebKitFormBoundaryv78rJ8mvP8YbHtBy > Referer: http://localhost:8080/chaincode?0 > Accept-Encoding: gzip, deflate > Accept-Language: id,en-US;q=0.8,en;q=0.6,ms;q=0.4 > Cookie: JSESSIONID=746B6931A8791427E02FCE5C1D20F1B7 > ------WebKitFormBoundaryv78rJ8mvP8YbHtBy > Content-Disposition: form-data; name="form3_hf_0" > ------WebKitFormBoundaryv78rJ8mvP8YbHtBy > Content-Disposition: form-data; name="fileFld"; filename="" > Content-Type: application/octet-stream > ------WebKitFormBoundaryv78rJ8mvP8YbHtBy > Content-Disposition: form-data; name="modeImage" > 0 > ------WebKitFormBoundaryv78rJ8mvP8YbHtBy > Content-Disposition: form-data; name="msgImage" > ------WebKitFormBoundaryv78rJ8mvP8YbHtBy > Content-Disposition: form-data; name="loadBtn2" > 1 > ------WebKitFormBoundaryv78rJ8mvP8YbHtBy-- > {noformat} > With the working form, the request is urlencoded form: > {noformat} > POST /chaincode?0-1.IBehaviorListener.0-form2-loadBtn3 HTTP/1.1 > Host: localhost:8080 > Connection: keep-alive > Content-Length: 36 > Origin: http://localhost:8080 > Wicket-FocusedElementId: loadBtn32 > User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 > (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 > Content-Type: application/x-www-form-urlencoded; charset=UTF-8 > Accept: application/xml, text/xml, */*; q=0.01 > X-Requested-With: XMLHttpRequest > Wicket-Ajax: true > Wicket-Ajax-BaseURL: chaincode?0 > Referer: http://localhost:8080/chaincode?0 > Accept-Encoding: gzip, deflate > Accept-Language: id,en-US;q=0.8,en;q=0.6,ms;q=0.4 > Cookie: JSESSIONID=746B6931A8791427E02FCE5C1D20F1B7 > form21_hf_0=&modeImage2=0&loadBtn3=1 > {noformat} > "Probably" related with WICKET-5924, but I don't have issue with > FileUploadField, my issue is with other form components in the same form as > FileUploadField. Probably related to: > http://stackoverflow.com/questions/28784942/fileupload-field-wicket-error > *Test case:* > {code} > git clone https://github.com/tmdgitb/pengenalan_pola_shih.git -t WICKET-6002 > {code} > 1. Go to "ChainCode" page > 2. click "Load Biasa" on the left, you'll see "modeimageModel: null". --> not > working: using FileUploadField + multipart > 3. click "Load 3" on the right, you'll see "modeimageModel: WHITE_ON_BLACK" > --> works: using urlencoded -- This message was sent by Atlassian JIRA (v6.3.4#6332)