You get the error because you are using CompoundPropertyModel and has the security manager in tomcat turned on.
CompoundPropertyModel uses introspection to set / get properties and for doing that, it needs to run with permission java.lang.reflect.ReflectPermission suppressAccessChecks You can either turn the security manager off or add the permission to catalina.policy it should be an entry like this grant codeBase "file:${catalina.home}/webapps/<your-web-app}/-" { permission java.lang.reflect.ReflectPermission "suppressAccessChecks" }; -Matej Thomas Lee wrote: > Hi all, > > I'm very new to Wicket, so this is most likely a misunderstanding on my > part, but I've got code that looks something like the following (all > namespace & import info stripped out for brevity): > > // BEGIN > > // Timesheet.java > > public class Timesheet implements Serializable { > private String description; > private String duration; > > public String getDescription() { > return description; > } > > public void setDescription(String description) { > this.description = description; > } > > public String getDuration() { > return duration; > } > > public void setDuration(String duration) { > this.duration = duration; > } > } > > // TimesheetForm.java > > public class TimesheetForm extends Form { > private TextField descriptionTextField = new TextField("description"); > private TextField durationTextField = new TextField("duration"); > > public TimesheetForm(String id, IModel model) { > super(id, model); > add(descriptionTextField); > add(durationTextField); > } > } > > // TimesheetListPage.java > > public class TimesheetListPage extends WebPage { > public TimesheetListPage() { > super(); > Timesheet model = new Timesheet(); > add(new TimesheetForm("timesheetForm", new > CompoundPropertyModel(model))); > } > } > > // TimesheetListPage.html > > <!-- snip: xhtml doctype and wicket xml namespace declaration --> > <html> > <body> > <form wicket:id="timesheetForm"> > <input type="text" wicket:id="description" /> > <input type="text" wicket:id="duration" /> > </form> > </body> > </html> > > // END > > When I deploy this code to my Tomcat 5 container, I get the following error: > > // BEGIN > > WicketMessage: Exception in rendering component: [MarkupContainer > [Component id = timesheetForm, page = TimesheetListPage, path = > 0:timesheetForm.TimesheetForm, isVisible = true, isVersioned = true]] > > Root cause: > > java.security.AccessControlException: access denied > (java.lang.reflect.ReflectPermission suppressAccessChecks) at > java.security.AccessControlContext.checkPermission(AccessControlContext.java:264) > > at > java.security.AccessController.checkPermission(AccessController.java:427) > at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) > at > java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:107) > at > wicket.util.lang.PropertyResolver$MethodGetAndSet.<init>(PropertyResolver.java:783) > > at > wicket.util.lang.PropertyResolver.getGetAndSetter(PropertyResolver.java:340) > at > wicket.util.lang.PropertyResolver.getObjectAndGetSetter(PropertyResolver.java:200) > > at wicket.util.lang.PropertyResolver.getValue(PropertyResolver.java:88) > at > wicket.model.AbstractPropertyModel.onGetObject(AbstractPropertyModel.java:126) > > at > wicket.model.AbstractDetachableModel.getObject(AbstractDetachableModel.java:100) > > at wicket.Component.getModelObject(Component.java:968) at > wicket.Component.getModelObjectAsString(Component.java:983) at > wicket.markup.html.form.FormComponent.getModelValue(FormComponent.java:728) > at > wicket.markup.html.form.FormComponent.getValue(FormComponent.java:371) > at wicket.markup.html.form.TextField.onComponentTag(TextField.java:102) > at wicket.Component.renderComponent(Component.java:1643) at > wicket.MarkupContainer.onRender(MarkupContainer.java:925) at > wicket.Component.render(Component.java:1511) at > wicket.MarkupContainer.renderNext(MarkupContainer.java:1332) at > wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:980) > at wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:915) > at wicket.markup.html.form.Form.onComponentTagBody(Form.java:774) at > wicket.Component.renderComponent(Component.java:1674) at > wicket.MarkupContainer.onRender(MarkupContainer.java:925) at > wicket.markup.html.form.Form.onRender(Form.java:845) at > wicket.Component.render(Component.java:1511) at > wicket.MarkupContainer.renderNext(MarkupContainer.java:1332) at > wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:980) > at wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:915) > at wicket.Component.renderComponent(Component.java:1674) at > wicket.MarkupContainer.onRender(MarkupContainer.java:925) at > wicket.Component.render(Component.java:1511) at > wicket.MarkupContainer.renderNext(MarkupContainer.java:1332) at > wicket.MarkupContainer.renderAll(MarkupContainer.java:942) at > wicket.Page.onRender(Page.java:867) at > wicket.Component.render(Component.java:1511) at > wicket.Page.renderPage(Page.java:411) at > wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:226) > > at > wicket.request.compound.DefaultResponseStrategy.respond(DefaultResponseStrategy.java:49) > > at > wicket.request.compound.AbstractCompoundRequestCycleProcessor.respond(AbstractCompoundRequestCycleProcessor.java:66) > > at wicket.RequestCycle.doProcessEventsAndRespond(RequestCycle.java:852) > at wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:879) at > wicket.RequestCycle.step(RequestCycle.java:960) at > wicket.RequestCycle.steps(RequestCycle.java:1034) at > wicket.RequestCycle.request(RequestCycle.java:453) at > wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:215) at > javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at > java.lang.reflect.Method.invoke(Method.java:585) at > org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) > at java.security.AccessController.doPrivileged(Native Method) at > javax.security.auth.Subject.doAsPrivileged(Subject.java:517) at > org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:272) > at > org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) > > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:245) > > at > org.apache.catalina.core.ApplicationFilterChain.access$0(ApplicationFilterChain.java:50) > > at > org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156) > > at java.security.AccessController.doPrivileged(Native Method) at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152) > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) > > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) > > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) > at > org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) > > at > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) > > at java.lang.Thread.run(Thread.java:595) > > // END > > Is there any way to get around this without having to modify my servlet > container to give wicket suppressAccessChecks permissions? > > Cheers, > Tom > > > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Wicket-user mailing list > Wicket-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-user > Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user