安德魯非常友好地爲我提交了原始問題。我曾嘗試這樣做(幾乎如你所說):
class MyWizard extends Wizard {
private Integer finishPressed = -1; // deliberately set an invalid value to start with
public MyWizard() {
finishPressed = 0; // only place where finishedPressed is set to 0
log.info("init: finishPressed={}", finishPressed);
}
@Override
public void onFinish() {
log.info("begin: finishPressed={}", finishPressed);
if (! finishPressed) {
finishPressed += 1;
// do onFinish actions ...
}
log.info("end: finishPressed={}", finishPressed);
}
}
不過,我發現的是,onFinish()被調用多次,我按下Finish按鈕,但每次finishPressed爲0時它進入方法,而不是計數遞增。
注意:我只有在日誌中看到「init:finishPressed = 0」一次。我不知道它是如何持續重置爲0.但是,我注意到onFinish()調用每次都由不同的線程處理。但如前所述,構造函數(唯一的地方finishPressed設置爲0)只被調用一次。
只有將finishPressed聲明爲static(這顯然會導致實際操作中的問題),我是否可以看到finishPressed按預期增加。
謝謝Sven。只需使用標準的Wicket嚮導組件。如果你們可以提供一個啓用了Ajax的嚮導,那將非常棒;) –
它已經在那裏:覆蓋newButtonBar()並讓它返回一個'AjaxWizardButtonBar'。 – svenmeier