我有一個帶有AjaxLazyLoadPanel的頁面,它包含一個長加載列表並提交AjaxButton。在延遲加載期間AjickButton上的Wicket-hide元素
在AjaxLazyLoadPanel準備就緒後,當我提交時,另一個長時間加載正在執行,之後我需要刷新整個頁面。這是我自己的代碼,代碼看起來如下:
AjaxButton button1 = new AjaxButton("submit1") {
@Override
protected void onSubmit(AjaxRequestTarget target, Form form) {
someLongWorkingMethod();
setResponsePage(page); //refreshing page
}
};
add(button1);
它的工作原理完美。但是現在我想要做的是 - 在方法計算時禁用此按鈕或隱藏此按鈕(或者在必要時隱藏整個面板),以及使用setResponsePage刷新頁面時,我希望將此按鈕返回。
我已經看了很多帖子/郵件列表吧,但沒有幫助我,我想,我發現和someLongWorkingMethod()之前把它所有的東西:
ajaxLazyLoadPanel.setOutputMarkupId(true);
ajaxLazyLoadPanel.setOutputMarkupPlaceholderTag(true);
ajaxLazyLoadPanel.add(new AttributeAppender("style","display:none;"));
ajaxLazyLoadPanel.setVisible(false);
ajaxLazyLoadPanel.setEnabled(false);
target.add(ajaxLazyLoadPanel);
而同樣不是ajaxLazyLoadPanel但「這個」(AjaxButton)。
我在做一些非常錯誤的事情嗎?這是我試圖做甚至可能的嗎?我真的很感謝一些幫助。
如果我理解正確的話,好像是,你可以立即刷新頁面按鈕的'onClick'及處理'someLongWorkingMethod()'的' ajaxLazyLoadPanel'?如果這是不正確的,請提供一些關於用例的更多信息。 – OnesAndZeros
@OnesAndZeros - 我想你是對的,但我認爲這樣做會很複雜,因爲在頁面加載時已經有LazyLoadPanel和另一個長載列表和這個按鈕。所以,我認爲我應該刷新頁面,然後在LazyLoadPanel執行someLongWorkingMethod()。但我不想在第一頁加載時這樣做 - 這將是我想 – Horuss
的問題你可以使用一個單獨的構造函數或只傳遞一個布爾標誌來觸發一個條件語句,只有當來自你的按鈕...實際上,我想知道你是否不能僅僅使用setResponsePage()的ajax功能insead,但是隻需要將面板設置爲骯髒,以便它可以重新加載?你可以把你的按鈕放在lazyLoadPanel中,這樣一旦面板返回到加載模式,它就會消失(顯示微調器而不是組件)? – OnesAndZeros