Wicket向导在方法isComplete()中提供错误信息;

时间:2015-10-02 14:45:33

标签: java wicket wizard

除了previous question之外,我正在尝试使用步骤概述自行实现Wicket向导。现在的问题是,即使步骤尚未完成,isComplete();似乎也会返回true。我做了 3 wizardsteps ,然后我运行了这段代码:

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);
    }
}

第一步控制台中的输出是:

  

class {package} .StepOne&gt;活动
  class {package} .StepTwo&gt;成品
  class {package} .StepThree&gt;完成

改为下一步:

  

class {package} .StepOne&gt;成品
  class {package} .StepTwo&gt;活动
  class {package} .StepThree&gt;完成

最后一步:

  

class {package} .StepOne&gt;成品
  class {package} .StepTwo&gt;成品
  class {package} .StepThree&gt;活性

我无法解释这种行为。正如我在上面提到的帖子中提到的那样,如果最终有效,我想分享这个组件。提前谢谢。

这是一个问题,我实施的步骤还没有真正的目标吗?我是否必须在面板代码中手动设置setComplete();或其他内容?

1 个答案:

答案 0 :(得分:1)

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();

记下“如果向导可以继续下一步”。