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
>
>

Reply via email to