我有一個簡單的模式彈出窗口,可以通過按鈕關閉。在要顯示模式的頁面上有一個帶有ID的佔位符。當頁面第一次加載我addOrReplace一個空的面板。然後,爲了響應正確的操作,我將該面板與模式面板交換。然後關閉面板並將其與另一個空面板重新交換。一切正常。但是,這是奇怪的事情 - 當我第二次這樣做時,模式面板會正常打開,但是當我按下關閉它時,即使它被新的空面板替換並添加到目標中,它也不會關閉 - 但它之前工作過!當我再次按下相同的按鈕時,一切崩潰都無法找到模塊的標記組件(但不應該有它的標記了!)檢票口 - 第二次沒有更換面板
我已經想了一整天,但我還沒有找到這一切的原因。任何幫助將非常感激。
private void swapToDummyPopupContainer() {
currentPopupContainer = new DummyPanel("popupContainer");
addOrReplace(currentPopupContainer);
}
private void swapToCreationPopupContainer(final FCalendarEvent event) {
EventCreationPopup popup = new EventCreationPopup("popupContainer", event) {
private static final long serialVersionUID = 965466080498078142L;
@Override
public void onDataSubmit(AjaxRequestTarget target) {
AvailabilityDTO model = getModel();
event.setTitle(model.getDescription());
pushNewEventToModel(model);
availabilityMapping.put(event.getId(), model);
FCalendarEventActions.addEvent(target, fcalendar, event);
swapToDummyPopupContainer();
target.add(currentPopupContainer);
}
@Override
public void onCancel(AjaxRequestTarget target) {
swapToDummyPopupContainer();
target.add(currentPopupContainer);
}
};
currentPopupContainer = popup;
addOrReplace(currentPopupContainer);
}
@Override
protected void onRangeSelection(AjaxRequestTarget target, Date startDate, Date endDate,
boolean isAllDay) {
final FCalendarEvent event = new FCalendarEvent();
swapToCreationPopupContainer(event);
target.add(currentPopupContainer);
}
對於標記有在父面板是
<wicket:container wicket:id="popupContainer" />
和要交換兩個面板這樣
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<wicket:panel>
</wicket:panel>
</html>
在模態標記的端部被定義(關閉之前標籤)有JavaScript,但我不認爲它與它有任何關係:
<script type="text/javascript">
var $modal = $('#eventCreationPopup');
$modal.modal('setting', {
selector : {
close : '',
approve : '',
deny : ''
}
});
$modal.modal("show");
</script>
容器在您檢票生成最終的標記沒有真正的標籤:
請添加一些代碼(Java和標記)。僅僅從描述來看,如果不是不可能弄清楚發生了什麼,那很難。 – Nicktar
嘗試在面板上調用setOutputMarkupPlaceholderTag(true)。 –
我做到了,但沒有幫助。之前也有setOutputMarkupId設置。 – user2902211