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