首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Wicket向导在方法isComplete()中提供虚假信息;

Wicket向导在方法isComplete()中提供虚假信息;
EN

Stack Overflow用户
提问于 2015-10-02 14:45:32
回答 1查看 64关注 0票数 0

除了一个previous question之外,我还试图通过一个步骤概述来实现Wicket。现在的问题是,即使这一步尚未完成,isComplete();似乎仍然返回true。我做了3个向导步骤,然后运行以下代码:

代码语言:javascript
运行
复制
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();或在我的面板代码中设置它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-02 17:04:08

IWizardStep#isComplete()的含义不是您所认为的那样:

代码语言:javascript
运行
复制
/**
 * 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();

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32909817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档