Wicket Wizard显示步骤索引

时间:2015-09-25 11:38:08

标签: iterator wicket infinite-loop wizard

对于我的Wicket向导我想显示如下信息:"向导步骤 1 of 4 "。我首先得到了步数,我已经遇到了第一个问题:

POST https://myserver:8080/Service/GetContact HTTP/1.1
Accept: text/html,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
Content-Length: 113
Host: myserver:8080
Connection: Keep-Alive

我的迭代器创建了一个无限循环。难道不能只有四个他可以迭代的对象吗? 或者甚至还有一种我尚未找到的这种分页的基本实现? 因为我的下一步是将当前索引从Connection: Keep-Alive中取出并查找它是哪个数字。

1 个答案:

答案 0 :(得分:0)

我以为我分享了我的解决方案(就目前而言)

public class OverviewComponent extends Panel{
    private static final long serialVersionUID = 1L;
    private List<WizardStep> steps;
    private WizardModel model;

    public OverviewComponent(String id, WizardModel model) {
        super(id);
        this.model = model;
        steps = fillList();

        this.add(new ListView<WizardStep>("steps", steps) {
            private static final long serialVersionUID = 1L;
            /**
             * Wrap a markup container around the item append a css attribute to every item
             */
            @Override
            protected void populateItem(ListItem<WizardStep> item) {
                WebMarkupContainer stepOverviewItem;
                item.add(stepOverviewItem = new WebMarkupContainer("stepOverviewItem"));
                stepOverviewItem.add(new Label("index", Model.of(item.getIndex()+1)));
                stepOverviewItem.add(new AttributeModifier("class", getCSSProperty(item.getModelObject())));
                stepOverviewItem.setOutputMarkupId(true);
                stepOverviewItem.setOutputMarkupPlaceholderTag(true);
            }

        });
    }   

    public String getCSSProperty(WizardStep step) {
        if (step.equals(model.getActiveStep())) {
            return "active";
        } else if (!step.isComplete()) {
            return "pending";
        } else if (step.isComplete()) {
            return "completed";
        }
        return "";
    }

    public List<WizardStep> fillList() {
        List<WizardStep> iSteps = new ArrayList<WizardStep>();
        Iterator<IWizardStep> iterator = model.stepIterator();
        while (iterator.hasNext()) {
            iSteps.add((WizardStep)iterator.next());
        }
        return iSteps;
    }
}