除了一个previous question之外,我还试图通过一个步骤概述来实现Wicket。现在的问题是,即使这一步尚未完成,isComplete();似乎仍然返回true。我做了3个向导步骤,然后运行以下代码:
public class MainWizard extends Wizard{
private static final long serialVersionUID = 1L;
private List<IWizardStep> steps = new ArrayList<IWizardStep>();
private Component overview = newOverviewBar("overview");
private IWizardModel wizardModel;
public MainWizard(String id, IWizardModel wizardModel, boolean addDefaultCssStyle) {
super(id, wizardModel, addDefaultCssStyle);
this.wizardModel = wizardModel;
fillList();
getIndex();
this.add(overview);
}
public void getIndex(){
for(IWizardStep step : steps){
System.out.println(step.getClass());
if(step.equals(wizardModel.getActiveStep())){
System.out.println("Active");
} else if(!step.isComplete()){
System.out.println("Pending");
} else if(step.isComplete()){
System.out.println("Finished");
}
}
}
public void fillList(){
Iterator<IWizardStep> iterator = wizardModel.stepIterator();
while(iterator.hasNext()){
steps.add(iterator.next());
}
}
@Override
public void onActiveStepChanged(IWizardStep newStep) {
try{
getIndex();
} catch (Exception e){
e.getMessage();
}
super.onActiveStepChanged(newStep);
}
}第一步的控制台中的输出是:
类{package}.StepOne > Active 类{package}.StepTwo > Finished 类{package}.StepThree > Finished
关于下一步的改变:
类{package}.StepOne > Finished 类{package}.StepTwo > Active 类{package}.StepThree > Finished
在最后一步:
类{package}.StepOne > Finished 类{package}.StepTwo > Finished 类{package}.StepThree > Active
我无法解释这种行为。正如我在上面链接的文章中所建议的,如果这个组件在最后能工作的话,我想分享它。提前谢谢。
我实现的步骤还没有一个真正的目标,这是个问题吗?我是否必须手动设置setComplete();或在我的面板代码中设置它?
发布于 2015-10-02 17:04:08
IWizardStep#isComplete()的含义不是您所认为的那样:
/**
* Checks if this step is complete. This method should return {@code true} if the wizard can
* proceed to the next step.
*
* @return {@code true} if the wizard can proceed from this step, {@code false} otherwise.
*/
boolean isComplete();注意“如果向导可以继续下一步”。
https://stackoverflow.com/questions/32909817
复制相似问题