首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在#oninitilize中添加wicket面板

在#oninitilize中添加wicket面板
EN

Stack Overflow用户
提问于 2015-01-21 12:00:29
回答 1查看 68关注 0票数 0

嗨,我已经为这件事纠结了一段时间。你能不能请你建议一下。

代码语言:javascript
复制
public class JobDetails extends Panel implements Serializable {
private static Logger LOGGER = Logger.getLogger(JobDetails.class);
public static final long serialVersionUID = 42L;
private List<Job> list;

@Override
protected void onInitialize() {
    super.onInitialize();

}

public JobDetails(String id, final PageParameters params) {
    super(id);
    FeedbackPanel feedbackpanel = new FeedbackPanel("feedbackpanel");
    add(feedbackpanel);
    String JOBNUMBER = params.get("jobnumber").toString();
    String OBJECTTYPE = params.get("objecttype").toString();
    String OBJECTNUMBER = params.get("objectnumber").toString();
    if (JOBNUMBER != null) {
        LOGGER.info("JOBNUMBER != null");
        list = Utils.retrieve(JOBNUMBER);
    } else {
        list = Utils.retrieve(OBJECTTYPE, OBJECTNUMBER);
    }
    DataView dataView = new DataView("jobs", new ListDataProvider(list)) {

        @Override
        public void onConfigure() {
            super.onConfigure();
            setVisible(getDataProvider().size() > 0);
        }

        @Override
        protected void populateItem(final Item item) {
            final Job job = (Job) item.getModelObject();
            Link plink = new Link("parentJobLink") {

                @Override
                public void onClick() {
                    PageParameters p2 = new PageParameters();
                    p2.add("jobNumber", job.getParentJob());
                    JobDetails.this.replaceWith(new ParentJobDetails("innerpanel", p2));
                }
            };
            plink.add(new Label("parentJobLabel", job.getParentJob()));
            item.add(plink);
            item.add(new Label("jobType", job.getJobType()));
            item.add(new Label("whoSubmitted", job.getWhoSubmitted()));
            item.add(new Label("objectType", job.getObjectType()));
            item.add(new Label("objectNumber", job.getObjectNumber()));
            item.add(new Label("objectRevision", job.getObjectRevision()));
            item.add(new Label("jobStatus", job.getJobStatus()));
        }
    };
    dataView.setItemsPerPage(20);
    add(dataView);
    add(new CustomPagingNavigator("navigator", dataView));


    if (list.size() == 0) {

***"Replace the Current Panel with new(SearchInnerPanel("innerpanel", params)"***
    }
}
}

场景:当我搜索一个职务时,如果一个作业存在,作业将显示在这个面板中,如果作业不存在,它将被重定向回搜索面板。我无法重定向回搜索面板。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-21 12:29:35

下面是代码应该是什么样的样子:

代码语言:javascript
复制
    public class JobDetails extends Panel {
private static final Logger LOGGER = Logger.getLogger(JobDetails.class);
public static final long serialVersionUID = 42L;
private List<Job> list;

public JobDetails(String id, final PageParameters params) {
    super(id);
    FeedbackPanel feedbackpanel = new FeedbackPanel("feedbackpanel");
    add(feedbackpanel);
}

@Override
protected void onInitialize() {
    super.onInitialize();

    PageParameters params = getPage().getPageParameters();

    String JOBNUMBER = params.get("jobnumber").toString();
    String OBJECTTYPE = params.get("objecttype").toString();
    String OBJECTNUMBER = params.get("objectnumber").toString();
    if (JOBNUMBER != null) {
        LOGGER.info("JOBNUMBER != null");
        list = Utils.retrieve(JOBNUMBER);
    } else {
        list = Utils.retrieve(OBJECTTYPE, OBJECTNUMBER);
    }
    DataView dataView = new DataView("jobs", new ListDataProvider(list)) {

        @Override
        public void onConfigure() {
            super.onConfigure();
            setVisible(getDataProvider().size() > 0);
        }

        @Override
        protected void populateItem(final Item item) {
            final Job job = (Job) item.getModelObject();
            Link plink = new Link("parentJobLink") {

                @Override
                public void onClick() {
                    PageParameters p2 = new PageParameters();
                    p2.add("jobNumber", job.getParentJob());
                    JobDetails.this.replaceWith(new ParentJobDetails("innerpanel", p2));
                }
            };
            plink.add(new Label("parentJobLabel", job.getParentJob()));
            item.add(plink);
            item.add(new Label("jobType", job.getJobType()));
            item.add(new Label("whoSubmitted", job.getWhoSubmitted()));
            item.add(new Label("objectType", job.getObjectType()));
            item.add(new Label("objectNumber", job.getObjectNumber()));
            item.add(new Label("objectRevision", job.getObjectRevision()));
            item.add(new Label("jobStatus", job.getJobStatus()));
        }
    };
    dataView.setItemsPerPage(20);
    add(dataView);
    add(new CustomPagingNavigator("navigator", dataView));


    if (list.size() == 0) {
      replaceWith(new(SearchInnerPanel("innerpanel", params));
    }

}

}

但是,如果将检索list的代码移动到此面板的父面板,则会好得多。如果列表中有项目,则使用JobDetails面板,否则使用SearchInnerPanel

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

https://stackoverflow.com/questions/28066757

复制
相关文章

相似问题

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