Hello, I have a page which contains a table form. Inside this table there are some message objects and their data shown. Moreover the user can select some of the messages and trigger some action on them. Then there should be a modal window where the user have to set a remark for the selected messages.
The modal window: public class RemarkModalWindow extends ModalWindow{ /** serialVersionUID */ private static final long serialVersionUID = 8798141972520682460L; /** * Constructor for the modal window. * * @param id the id of the modal window */ public RemarkModalWindow(String id) { super(id); RemarkPanel remarkPanel = new RemarkPanel(this.getContentId(), this); this.setContent(remarkPanel); this.setCloseButtonCallback(new ModalWindow.CloseButtonCallback() { /** serialVersionUID */ private static final long serialVersionUID = 4018212161671004354L; @Override public boolean onCloseButtonClicked(AjaxRequestTarget target) { DAPForm<FaultModel> remarkForm = remarkPanel.getRemarkForm(); remarkForm.error(getString("remarkModalClose.errorMessage")); target.add(remarkForm); return false; } }); } @Override public boolean isResizable(){ return false; } @Override public int getInitialWidth(){ return 500; } @Override public int getInitialHeight(){ return 100; } @Override public IModel<String> getTitle(){ return Model.of(getString("remarkModal.title")); } } So I created a modal window which contains a panel. Inside the panel there is a form with the textfield for the remark and an "add" button. If I click the "add" button the window should be closed and the message objects should get the remark. The panel inside the modal window: public class RemarkPanel extends Panel { /** serialVersionUID */ private static final long serialVersionUID = -8422969117822175332L; RemarkForm remarkForm; /** * Constructor which creates the panel. * * @param id the id of the panel * @param remarkModalWindow */ public RemarkPanel(String id, RemarkModalWindow remarkModalWindow) { super(id); remarkForm = (RemarkForm)FormFactory.getForm(DAPType.REMARK); remarkForm.setModalWindow(remarkModalWindow); add(remarkForm); } public DAPForm<FaultModel> getRemarkForm() { return (DAPForm<FaultModel>) this.remarkForm; } } The Form inside the panel: public class RemarkForm extends DAPForm<FaultModel> { /** serialVersionUID */ private static final long serialVersionUID = -3714702420141947828L; private ModalWindow modalWindow; /** * Constructor which creates a form to set the remark of a fault message. * * @param id the id of the form */ public RemarkForm(String id) { super(id); setDefaultModel(new CompoundPropertyModel<FaultModel>(new FaultModel())); addTextfields(); addButtons(); } /** * Adds the additional textfields. */ private void addTextfields() { TextField<String> faultRemark = new TextField<>("faultRemark"); add(faultRemark); } /** * Adds the buttons to the form. */ private void addButtons() { add(new AddRemarkButton("addRemarkButton", this, modalWindow)); } public void setModalWindow(ModalWindow modalWindow) { this.modalWindow = modalWindow; } } This is my "add" button: public class AddRemarkButton extends AjaxButton { /** serialVersionUID */ private static final long serialVersionUID = -8702103017249783842L; private ModalWindow modalWindow; public AddRemarkButton(String id, Form<?> form, ModalWindow modalWindow) { super(id, form); this.modalWindow = modalWindow; } @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { FaultModel faultModel = (FaultModel)form.getModelObject(); String remark = faultModel.getFaultRemark(); System.out.println("Remark: " + remark); modalWindow.close(target); } } If I click the "add" button in the modal window I get the following exception: java.lang.NullPointerException at com.tsystems.dap.console.components.button.AddRemarkButton.onSubmit(AddRemarkButton.java:32) at org.apache.wicket.ajax.markup.html.form.AjaxButton$1.onSubmit(AjaxButton.java:113) at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:215) at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1309) at org.apache.wicket.markup.html.form.Form.process(Form.java:976) at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:797) at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:171) at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155) at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:601) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258) at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241) at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248) at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234) at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895) at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265) at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293) at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:497) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang.Thread.run(Thread.java:745) Complete stack: org.apache.wicket.WicketRuntimeException: Method onRequest of interface org.apache.wicket.behavior.IBehaviorListener targeted at org.apache.wicket.ajax.markup.html.form.AjaxButton$1@15e7639 on component [AddRemarkButton [Component id = addRemarkButton]] threw an exception at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:268) at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241) at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248) at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234) at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895) at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265) at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293) at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258) at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241) at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248) at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234) at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895) at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265) at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293) at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) I don't know what I am doing wrong. Neither the AjaxRequestTarget nor the modalWindow is null. Can please somebody help me please? Mit freundlichen Grüßen Christoph Manig