Cannot modify component hierarchy after render phase has started
Hello, I'm facing weird "Cannot modify component hierarchy after render phase has started" exception on simultaneous page access using 2 different browsers everything works in case there is only one browser, or page being accessed not "simultaneously" We are using "single page" application, with async updates via AjaxBehaviours and WebSockets Maybe you can propose how to debug this? Wicket 8.8.8-SNAPSHOT Tomcat 8.5.12 Here is the stack trace: org.apache.wicket.WicketRuntimeException: Cannot modify component hierarchy after render phase has started (page version cant change then anymore) at org.apache.wicket.Component.checkHierarchyChange(Component.java:3649) at org.apache.wicket.MarkupContainer.remove(MarkupContainer.java:685) at org.apache.wicket.MarkupContainer.addedComponent(MarkupContainer.java:990) at org.apache.wicket.MarkupContainer.add(MarkupContainer.java:239) at org.apache.openmeetings.web.common.MainPanel.onInitialize(MainPanel.java:151) at org.apache.wicket.Component.fireInitialize(Component.java:878) at org.apache.wicket.MarkupContainer.internalInitialize(MarkupContainer.java:1037) at org.apache.wicket.MarkupContainer.addedComponent(MarkupContainer.java:1014) at org.apache.wicket.MarkupContainer.add(MarkupContainer.java:239) at org.apache.openmeetings.web.pages.MainPage.onInitialize(MainPage.java:52) at org.apache.wicket.Component.fireInitialize(Component.java:878) at org.apache.wicket.MarkupContainer.internalInitialize(MarkupContainer.java:1037) at org.apache.wicket.Page.isPageStateless(Page.java:459) at org.apache.wicket.request.handler.render.WebPageRenderer.isPageStateless(WebPageRenderer.java:287) at org.apache.wicket.request.handler.render.WebPageRenderer.shouldRenderPageAndWriteResponse(WebPageRenderer.java:333) at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:193) at org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:202) at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:912) at org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:65) at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:283) at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:253) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:221) at org.apache.wicket.protocol.ws.AbstractUpgradeFilter.processRequestCycle(AbstractUpgradeFilter.java:70) at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:204) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:286) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.red5.logging.LoggerContextFilter.doFilter(LoggerContextFilter.java:84) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) -- WBR Maxim aka solomax
Re: File Image Upload
Hi, there has been a change that the file parts have to be parsed before read: https://cwiki.apache.org/confluence/display/WICKET/Migration+to+Wicket+7.0#MigrationtoWicket7.0-FilePartsmustbeparsedexplicitlybeforetryingtoreadthemWICKET-5839 I don't see this in your code. Could you try this? kind regards Tobias > Am 01.07.2017 um 15:12 schrieb gasper : > > Hello, > > I am trying to upload an image to a particular folder in my Web > application > I am using Apache Wicket 6.x > > This is a sample code i am using from MkYong: > > private FileUploadField fileUpload; >private String UPLOAD_FOLDER = "C:\\"; >//I want to change the UPLOAD_FOLDER from C directory to my folder > on the webApplication > >public FileUploadPage(final PageParameters parameters) { > >add(new FeedbackPanel("feedback")); > >Form form = new Form("form") { > @Override > protected void onSubmit() { > >final FileUpload uploadedFile = fileUpload.getFileUpload(); >if (uploadedFile != null) { > >// write to a new file >File newFile = new File(UPLOAD_FOLDER >+ uploadedFile.getClientFileName()); > >if (newFile.exists()) { >newFile.delete(); >} > >try { >newFile.createNewFile(); >uploadedFile.writeTo(newFile); > >info("saved file: " + uploadedFile.getClientFileName()); >} catch (Exception e) { >throw new IllegalStateException("Error"); >} > } > >} > >}; > >// Enable multipart mode (need for uploads file) >form.setMultiPart(true); > >// max upload size, 10k >form.setMaxSize(Bytes.kilobytes(10)); > >form.add(fileUpload = new FileUploadField("fileUpload")); > >add(form); > > -- > View this message in context: > http://apache-wicket.1842946.n4.nabble.com/File-Image-Upload-tp4678176.html > Sent from the Users forum mailing list archive at Nabble.com. > > - > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org >
File Image Upload
Hello, I am trying to upload an image to a particular folder in my Web application I am using Apache Wicket 6.x This is a sample code i am using from MkYong: private FileUploadField fileUpload; private String UPLOAD_FOLDER = "C:\\"; //I want to change the UPLOAD_FOLDER from C directory to my folder on the webApplication public FileUploadPage(final PageParameters parameters) { add(new FeedbackPanel("feedback")); Form form = new Form("form") { @Override protected void onSubmit() { final FileUpload uploadedFile = fileUpload.getFileUpload(); if (uploadedFile != null) { // write to a new file File newFile = new File(UPLOAD_FOLDER + uploadedFile.getClientFileName()); if (newFile.exists()) { newFile.delete(); } try { newFile.createNewFile(); uploadedFile.writeTo(newFile); info("saved file: " + uploadedFile.getClientFileName()); } catch (Exception e) { throw new IllegalStateException("Error"); } } } }; // Enable multipart mode (need for uploads file) form.setMultiPart(true); // max upload size, 10k form.setMaxSize(Bytes.kilobytes(10)); form.add(fileUpload = new FileUploadField("fileUpload")); add(form); -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/File-Image-Upload-tp4678176.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org