Hi, Sven Meier already explained you the problem at https://stackoverflow.com/questions/65632010/stateless-modaldialog-in-wicket/65664328 I've added sample code how to achieve it.
On Sun, Jan 10, 2021 at 7:20 PM Prag Progger <pragprog...@gmail.com> wrote: > Hi, > > Is it possible to create a stateless ModalDialog? > > I tried the following code, but it results in an error. The error > doesn't occur when removing the getStatelessHint() overrides, but that > would make it stateful. If it's not possible, would it be possible > with the deprecated ModalWindow? > > HTML Code: > > <!DOCTYPE html> > <html> > <head> > <style> > .modal-dialog { border-radius: 5px; } > .modal-dialog .modal-dialog-content { display: flex; > flex-direction: column; } > .modal-dialog-overlay.current-focus-trap .modal-dialog-content > { resize: both; } > .modal-dialog .modal-dialog-form { margin: 0; padding: 0; > overflow: hidden; flex: 1; display: flex; flex-direction: column; } > .modal-dialog .modal-dialog-header { border-radius: 5px 5px > 0px 0px; background: #ffb158; margin: 0; padding-top: 4px; text-align: > center; } > .modal-dialog .modal-dialog-body { flex: 1; overflow-y: auto; > padding: 20px; } > .modal-dialog .modal-dialog-footer { padding: 5px; } > </style> > </head> > <body> > <a wicket:id="openModalLink">Open modal</a> > > <div id="window" wicket:id="window"></div> > > <wicket:fragment wicket:id="modalContentFragment"> > <h1>Modal Dialog</h1> > <a wicket:id="closeModalLink">Close modal</a> > </wicket:fragment> > </body> > </html> > > Java Code: > > package org.example.modaltest; > > import org.apache.wicket.ajax.AjaxRequestTarget; > import org.apache.wicket.ajax.markup.html.AjaxLink; > import org.apache.wicket.extensions.ajax.markup.html.modal.ModalDialog; > import > org.apache.wicket.extensions.ajax.markup.html.modal.theme.DefaultTheme; > import org.apache.wicket.markup.html.GenericWebPage; > import org.apache.wicket.markup.html.panel.Fragment; > > public class ModalPage extends GenericWebPage<Void> { > public ModalPage() { > ModalDialog window = new ModalDialog("window"); > window.add(new DefaultTheme()); > window.setMarkupId("window"); > window.setOutputMarkupId(true); > add(window); > > Fragment modalContentFragment = new > Fragment(ModalDialog.CONTENT_ID, "modalContentFragment", this); > window.setContent(modalContentFragment); > modalContentFragment.setOutputMarkupId(true); > > AjaxLink<Void> closeModalLink = new > AjaxLink<Void>("closeModalLink") { > @Override > public void onClick(AjaxRequestTarget target) { > target.add(window); > ModalDialog window1 = (ModalDialog) > findPage().get("window"); > window1.close(target); > } > > @Override > protected boolean getStatelessHint() { > return true; > } > }; > closeModalLink.setOutputMarkupId(true); > modalContentFragment.add(closeModalLink); > > AjaxLink<Void> openModalLink = new AjaxLink<Void>("openModalLink") > { > @Override > public void onClick(AjaxRequestTarget target) { > ModalDialog window1 = (ModalDialog) > findPage().get("window"); > window1.open(target); > } > > @Override > protected boolean getStatelessHint() { > return true; > } > }; > add(openModalLink); > } > } > > > Error in Browser: > "Access Denied. You do not have access to the page you requested. > Return to home page" > > Java Exception: > > 16:34:16.382 [http-nio-8080-exec-4] WARN > o.a.w.c.r.h.ListenerRequestHandler - behavior not enabled; ignore > call. Behavior org.apache.wicket.ajax.markup.html.AjaxLink$1@5a149041 > at component [AjaxLink [Component id = closeModalLink]] > 16:34:16.386 [http-nio-8080-exec-4] WARN RequestCycleExtra - > ******************************** > 16:34:16.390 [http-nio-8080-exec-4] WARN RequestCycleExtra - Handling > the following exception > > org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedException: > Behavior rejected interface invocation. Component: [AjaxLink > [Component id = closeModalLink]] Behavior: > org.apache.wicket.ajax.markup.html.AjaxLink$1@5a149041 > at > org.apache.wicket.core.request.handler.ListenerRequestHandler.invoke(ListenerRequestHandler.java:276) > at > org.apache.wicket.core.request.handler.ListenerRequestHandler.invokeListener(ListenerRequestHandler.java:222) > at > org.apache.wicket.core.request.handler.ListenerRequestHandler.respond(ListenerRequestHandler.java:208) > at > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:902) > at > org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:63) > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >