Làm cách nào để mở hộp thoại phương thức trên PageLoad()
, trong hàm tạo của WebPage
và không có AjaxRequestTarget
, với Wicket?Cách mở ModalDialog trên PageLoad
9
A
Trả lời
11
tôi không thể tìm thấy một cách để mở nó mà không có một yêu cầu Ajax, nhưng nó hoàn toàn có thể mở nó khi trang web được tải, với một hành vi đơn giản:
HomePage.java
public class HomePage extends WebPage {
public HomePage(PageParameters pageParameters) {
super(pageParameters);
ModalWindow modal = new ModalWindow("modal");
modal.add(new OpenWindowOnLoadBehavior());
modal.setPageCreator(new ModalWindow.PageCreator() {
@Override
public Page createPage() {
return new RedirectPage("http://www.google.com");
}
});
add(modal);
}
}
OpenWindowOnLoadBehavior.java
public class OpenWindowOnLoadBehavior extends AbstractDefaultAjaxBehavior {
@Override
protected void respond(AjaxRequestTarget target) {
ModalWindow window = (ModalWindow) getComponent();
window.show(target);
}
@Override
public void renderHead(IHeaderResponse response) {
response.renderOnLoadJavascript(getCallbackScript().toString());
}
}
HomePage.html
<html xmlns:wicket="http://wicket.apache.org">
<body>
<div wicket:id="modal"></div>
</body>
</html>
+0
Cảm ơn bạn rất nhiều! – sonjafon
1
Mở một cửa sổ modal trên tải trang (không AJAX tham gia) được mô tả trong Wicket Wiki
/**
* @author Ernesto Reinaldo Barreiro
*/
public class OpenOnLoadModalWindow extends ModalWindow implements IHeaderContributor {
private static final long serialVersionUID = 1L;
/**
* @param id
*/
public OpenOnLoadModalWindow(String id) {
super(id);
}
/**
* @param id
* @param model
*/
public OpenOnLoadModalWindow(String id, IModel<?> model) {
super(id, model);
}
/**
* Adds the JavaScript to initially open modal window.
*/
public void renderHead(IHeaderResponse response)
{
response.renderOnDomReadyJavascript(getWindowOpenJavascript());
}
/*
* (non-Javadoc)
* @see org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow#makeContentVisible()
*/
@Override
protected boolean makeContentVisible()
{
return true;
}
}
+0
Tính năng này không hoạt động với Wicket 7.x – philonous
Trong wicket 6 bạn có thể thêm một '' 'AjaxEventBehavior''' vào trang của bạn và mở modal của bạn bên trong hành vi. Xem http://stackoverflow.com/a/17243712/2345093 – user2345093