DropDownChoice without Model throws RE in onSelectionChanged ------------------------------------------------------------
Key: WICKET-1300 URL: https://issues.apache.org/jira/browse/WICKET-1300 Project: Wicket Issue Type: Bug Components: wicket Affects Versions: 1.3.0-rc1 Reporter: Adriaan Koster Priority: Minor When I create a DropDownChoice using the constructor as advocated in the Wicket API I get a RuntimeException when I try to handle onSelectionChanged events. >From http://people.apache.org/~tobrien/wicket/apidocs/index.html: List SITES = Arrays.asList(new String[] { "The Server Side", "Java Lobby", "Java.Net" }); form.add(new DropDownChoice("site", SITES)); My code throwing exception: List<Performance> performances = eventDao.listPerformances(); // broken: DropDownChoice pickPerformance = new DropDownChoice("pickPerformance", performances) // workaround: new DropDownChoice("pickPerformance", new Model(null), performances) { protected boolean wantOnSelectionChangedNotifications() { return true; } @Override protected void onSelectionChanged(Object newSelection) { Performance event = (Performance) newSelection; } }; add(pickPerformance); Output: 14:23:10,968 ERROR RequestCycle.logRuntimeException:1331 - [PoolThread-9] Method onSelectionChanged of interface org.apache.wicket.markup.html.form.IOnChangeListener targeted at component [MarkupContainer [Component id = pickPerformance, page = nl.topticketline.freeline.ui.ViewReservation, path = 1:pickPerformance.ViewReservation$3, isVisible = true, isVersioned = false]] threw an exception org.apache.wicket.WicketRuntimeException: Method onSelectionChanged of interface org.apache.wicket.markup.html.form.IOnChangeListener targeted at component [MarkupContainer [Component id = pickPerformance, page = nl.topticketline.freeline.ui.ViewReservation, path = 1:pickPerformance.ViewReservation$3, isVisible = true, isVersioned = false]] threw an exception at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:194) at org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73) at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:90) at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1094) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1169) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1248) at org.apache.wicket.RequestCycle.request(RequestCycle.java:489) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:343) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:193) at org.mortbay.jetty.servlet.WebApplicationHandler$Chain.doFilter(WebApplicationHandler.java:334) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:286) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567) at org.mortbay.http.HttpContext.handle(HttpContext.java:1723) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:514) at org.mortbay.http.HttpContext.handle(HttpContext.java:1673) at org.mortbay.http.HttpServer.service(HttpServer.java:879) at org.mortbay.http.HttpConnection.service(HttpConnection.java:783) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:945) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:800) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:201) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:289) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:454) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:183) ... 21 more Caused by: java.lang.IllegalStateException: Attempt to set model object on null model of component: pickPerformance at org.apache.wicket.Component.setModelObject(Component.java:2794) at org.apache.wicket.markup.html.form.FormComponent.updateModel(FormComponent.java:992) at org.apache.wicket.markup.html.form.DropDownChoice.onSelectionChanged(DropDownChoice.java:152) ... 26 more It works fine when I use the constructor below which also passes in a Model: new DropDownChoice("pickPerformance", new Model(null), performances) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.