You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Grigorov (JIRA)" <ji...@apache.org> on 2013/01/07 14:44:13 UTC

[jira] [Resolved] (WICKET-4944) FileUploadField was rendered already problem inside a Form inside a Panel

     [ https://issues.apache.org/jira/browse/WICKET-4944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Grigorov resolved WICKET-4944.
-------------------------------------

    Resolution: Cannot Reproduce

Please provide a minimal quickstart to reproduce so we can debug it.
                
> FileUploadField was rendered already problem inside a Form inside a Panel
> -------------------------------------------------------------------------
>
>                 Key: WICKET-4944
>                 URL: https://issues.apache.org/jira/browse/WICKET-4944
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.5.8
>         Environment: Karaf
>   Karaf version               2.3.0
>   Karaf home                  /home/rio/git/bippo-commerce5/karaf
>   Karaf base                  /home/rio/git/bippo-commerce5/karaf
>   OSGi Framework              org.apache.felix.framework - 4.0.3
> JVM
>   Java Virtual Machine        OpenJDK 64-Bit Server VM version 23.2-b09
>   Version                     1.7.0_09
>   Vendor                      Oracle Corporation
>   Uptime                      34 minutes
>   Total compile time          42.303 seconds
> Threads
>   Live threads                149
>   Daemon threads              101
>   Peak                        185
>   Total started               1214
> Memory
>   Current heap size           165,141 kbytes
>   Maximum heap size           466,048 kbytes
>   Committed heap size         301,504 kbytes
>   Pending objects             0
>   Garbage collector           Name = 'PS Scavenge', Collections = 313, Time = 2.254 seconds
>   Garbage collector           Name = 'PS MarkSweep', Collections = 3, Time = 0.932 seconds
> Classes
>   Current classes loaded      16,739
>   Total classes loaded        23,114
>   Total classes unloaded      6,375
> Operating system
>   Name                        Linux version 3.5.0-21-generic
>   Architecture                amd64
>   Processors                  8
>            Reporter: Hendy Irawan
>
> I'm not exactly sure why this happens, but it happens 100% of the time on our config.
> Java: (from Page to Panel to Form that contains the FileUploadField)
> {code}
> @PaxWicketMountPoint(mountPoint = "shop_pub/${id}/edit")
> public class ShopViewEditPage extends BippoPubPage {
> 	private static final Logger log = LoggerFactory
> 			.getLogger(ShopViewEditPage.class);
> 	@Inject @Filter("(repositoryMode=normal)")
> 	private ShopRepository shopRepo;
> 	@Inject @Namespace("shop")
> 	private ImageRepository shopImageRepo;
> 	public ShopViewEditPage(PageParameters params) {
> 		super(false);
> 		final String shopId = params.get("id").toOptionalString();
> 		final IModel<Shop> shopModel = new AsyncModel<Shop>() {
> 			@Override
> 			protected Shop load() throws Exception {
> 				final Shop shop = shopRepo.findOne(shopId);
> 				if (shop == null) {
> 					throw new RestartResponseException(new PageProvider(PageNotFound.class),
> 							RedirectPolicy.NEVER_REDIRECT);
> 				}
> 				return shop;
> 			}
> 		};
> 		add(new EditShopProfilePanel("bippoEditShopProfile", shopModel));
> 		add(new EditShopImagePanel("bippoEditShopImageProfile", shopModel));
> 		add(new EditShopBannerPanel("editShopBanner", shopModel));
> 	}
> }
> {code}
> {code}
> public class EditShopImagePanel extends Panel {
> 	private static final Logger log = LoggerFactory
> 			.getLogger(EditShopImagePanel.class);
> 	@Inject @Namespace("shop")
> 	private ImageRepository shopImageRepo;
> 	@Inject @Filter("(repositoryMode=normal)")
> 	private ShopRepository shopRepo;
> 	public EditShopImagePanel(@Nonnull String id,
> 			@Nonnull final IModel<Shop> model) {
> 		super(id, model);
> 		setOutputMarkupId(true);
> 		
> 		// form upload
> 		final FileUploadForm formUpload = new FileUploadForm("simpleUploadForm", model);
> ...
> {code}
> {code}
> 	private class FileUploadForm extends Form<Shop> {
> 		public FileUploadField fileUploadField;
> 		public FileUploadForm(String id, IModel<Shop> model) {
> 			super(id, model);
> 			setMultiPart(true);
> 			setMaxSize(Bytes.kilobytes(10));
> 			add(fileUploadField = new FileUploadField("shopImageUpload"));
> 		}
> ...
> {code}
> Markup:
> {code}
> <wicket:panel>
> 	<form wicket:id="simpleUploadForm" id="simpleUploadForm">
> 		<fieldset>
> 			<legend>Photo Profile</legend>
> 			<input type="file" name="shopImageUpload" wicket:id="shopImageUpload" />
> 			<button wicket:id="ajaxUpload" value="Unggah" class="btn btn-small">
> 				<i class="icon-arrow-up"></i> Unggah
> 			</button>
> 			<div wicket:id="imageContainer" class="imageContainer"
> 				id="imageContainer">
> 				<img wicket:id="shownImage" class="img-polaroid">
> 				<button wicket:id="btnDelete" class="btn btn-small btn-danger">Delete</button> 
> 			</div>
> 			<input type="file" name="shopImageUpload" wicket:id="shopImageUpload">
> 			<button wicket:id="ajaxUpload" value="Unggah" class="btn btn-small">
> 				<i class="icon-circle-arrow-up"></i> Unggah
> 			</button>
> 		</fieldset>
> 	</form>
> </wicket:panel>
> {code}
> Trace:
> {code}
> Root cause:
> The component [FileUploadField [Component id = shopImageUpload]] was rendered already. You can render it only once during a render phase. Class relative path: org.apache.wicket.markup.html.form.upload.FileUploadField:bippoEditShopImageProfile:simpleUploadForm:shopImageUpload
> MarkupStream: [unknown]
> at org.apache.wicket.Page.componentRendered(Page.java:246)
> at org.apache.wicket.Component.rendered(Component.java:2620)
> at org.apache.wicket.Component.internalRender(Component.java:2393)
> at org.apache.wicket.Component.render(Component.java:2317)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1432)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1596)
> at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1571)
> at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1525)
> at org.apache.wicket.markup.html.form.Form.onComponentTagBody(Form.java:1661)
> at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72)
> at org.apache.wicket.Component.internalRenderComponent(Component.java:2559)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1534)
> at org.apache.wicket.Component.internalRender(Component.java:2389)
> at org.apache.wicket.Component.render(Component.java:2317)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1432)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1596)
> at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1571)
> at org.apache.wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:693)
> at org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy.renderAssociatedMarkup(AssociatedMarkupSourcingStrategy.java:76)
> at org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy.onComponentTagBody(PanelMarkupSourcingStrategy.java:112)
> at org.apache.wicket.Component.internalRenderComponent(Component.java:2559)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1534)
> at org.apache.wicket.Component.internalRender(Component.java:2389)
> at org.apache.wicket.Component.render(Component.java:2317)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1432)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1596)
> at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1571)
> at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1525)
> at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72)
> at org.apache.wicket.Component.internalRenderComponent(Component.java:2559)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1534)
> at org.apache.wicket.Component.internalRender(Component.java:2389)
> at org.apache.wicket.Component.render(Component.java:2317)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1432)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1596)
> at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1571)
> at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1525)
> at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72)
> at org.apache.wicket.Component.internalRenderComponent(Component.java:2559)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1534)
> at org.apache.wicket.Component.internalRender(Component.java:2389)
> at org.apache.wicket.Component.render(Component.java:2317)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1432)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1596)
> at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1571)
> at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1525)
> at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72)
> at org.apache.wicket.Component.internalRenderComponent(Component.java:2559)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1534)
> at org.apache.wicket.Component.internalRender(Component.java:2389)
> at org.apache.wicket.Component.render(Component.java:2317)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1432)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1596)
> at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1571)
> at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1525)
> at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72)
> at org.apache.wicket.Component.internalRenderComponent(Component.java:2559)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1534)
> at org.apache.wicket.Component.internalRender(Component.java:2389)
> at org.apache.wicket.Component.render(Component.java:2317)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1432)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1596)
> at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1571)
> at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1525)
> at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72)
> at org.apache.wicket.Component.internalRenderComponent(Component.java:2559)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1534)
> at org.apache.wicket.Component.internalRender(Component.java:2389)
> at org.apache.wicket.Component.render(Component.java:2317)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1432)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1596)
> at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1571)
> at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1525)
> at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72)
> at org.apache.wicket.Component.internalRenderComponent(Component.java:2559)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1534)
> at org.apache.wicket.Component.internalRender(Component.java:2389)
> at org.apache.wicket.Component.render(Component.java:2317)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1432)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1596)
> at org.apache.wicket.Page.onRender(Page.java:907)
> at org.apache.wicket.markup.html.WebPage.onRender(WebPage.java:140)
> at org.apache.wicket.Component.internalRender(Component.java:2389)
> at org.apache.wicket.Component.render(Component.java:2317)
> at org.apache.wicket.Page.renderPage(Page.java:1035)
> at org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:115)
> at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:237)
> at org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:167)
> at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:784)
> at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
> at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:255)
> at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:212)
> at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:283)
> at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
> at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:137)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
> at org.ops4j.pax.wicket.internal.FilterDelegator$Chain.doFilter(FilterDelegator.java:79)
> at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
> at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
> at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
> at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
> at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
> at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
> at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
> at org.ops4j.pax.wicket.internal.FilterDelegator$Chain.doFilter(FilterDelegator.java:77)
> at org.ops4j.pax.wicket.internal.FilterDelegator.doFilter(FilterDelegator.java:61)
> at org.ops4j.pax.wicket.internal.ServletProxy$ServletInvocationHandler.invoke(ServletProxy.java:72)
> at $Proxy17.service(Unknown Source)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at org.ops4j.pax.web.service.internal.HttpServiceStarted$2.invoke(HttpServiceStarted.java:210)
> at org.ops4j.pax.web.service.internal.$Proxy0.service(Unknown Source)
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652)
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:447)
> at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:70)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
> at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:559)
> at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
> at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1038)
> at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:117)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:374)
> at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189)
> at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:972)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
> at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:74)
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
> at org.eclipse.jetty.server.Server.handle(Server.java:363)
> at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:483)
> at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
> at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:920)
> at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:982)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
> at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
> at org.eclipse.jetty.server.nio.BlockingChannelConnector$BlockingChannelEndPoint.run(BlockingChannelConnector.java:298)
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
> at java.lang.Thread.run(Thread.java:722)
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira