Wicket 在#OnInitialize中添加导叶面板

Wicket 在#OnInitialize中添加导叶面板,wicket,Wicket,嗨,我已经玩了一段时间了。你能提出修改建议吗 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 protec

嗨,我已经玩了一段时间了。你能提出修改建议吗

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)"***
    }
}
}
公共类JobDetails扩展面板实现可序列化{
私有静态记录器=Logger.getLogger(JobDetails.class);
公共静态最终长serialVersionUID=42L;
私人名单;
@凌驾
受保护的void onInitialize(){
super.onInitialize();
}
公共作业详细信息(字符串id、最终页面参数参数){
超级(id);
反馈面板反馈面板=新的反馈面板(“反馈面板”);
添加(反馈面板);
字符串JOBNUMBER=params.get(“JOBNUMBER”).toString();
字符串OBJECTTYPE=params.get(“OBJECTTYPE”).toString();
字符串OBJECTNUMBER=params.get(“OBJECTNUMBER”).toString();
如果(作业编号!=null){
LOGGER.info(“JOBNUMBER!=null”);
列表=Utils.retrieve(作业编号);
}否则{
list=Utils.retrieve(OBJECTTYPE,OBJECTNUMBER);
}
DataView DataView=新数据视图(“作业”,新列表数据提供程序(列表)){
@凌驾
配置()中的公共无效{
super.onConfigure();
setVisible(getDataProvider().size()>0);
}
@凌驾
受保护的无效填充项(最终项){
最终作业作业=(作业)项。getModelObject();
链接链接链接=新链接(“parentJobLink”){
@凌驾
公共void onClick(){
PageParameters p2=新的PageParameters();
p2.添加(“jobNumber”,job.getParentJob());
JobDetails.this.replacetwith(新的ParentJobDetails(“innerpanel”,p2));
}
};
添加(新标签(“parentJobLabel”,job.getParentJob());
项目。添加(plink);
添加(新标签(“jobType”,job.getJobType());
添加(新标签(“whoSubmitted”,job.getWhoSubmitted());
添加(新标签(“objectType”,job.getObjectType());
添加(新标签(“objectNumber”,job.getObjectNumber());
添加(新标签(“objectRevision”,job.getObjectRevision());
添加(新标签(“jobStatus”,job.getJobStatus());
}
};
dataView.setItemsPerPage(20);
添加(数据视图);
添加(新的CustomPagingNavigator(“navigator”,dataView));
if(list.size()==0){
***用新的(SearchInnerPanel(“innerpanel”,参数)替换当前面板***
}
}
}

场景:当我搜索作业时,如果作业存在,作业将显示在此面板中,如果作业不存在,则将重定向回搜索面板。我无法重定向回搜索面板。

以下是代码的真实外观:

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

}
公共类作业详细信息扩展面板{
私有静态最终记录器Logger=Logger.getLogger(JobDetails.class);
公共静态最终长serialVersionUID=42L;
私人名单;
公共作业详细信息(字符串id、最终页面参数参数){
超级(id);
反馈面板反馈面板=新的反馈面板(“反馈面板”);
添加(反馈面板);
}
@凌驾
受保护的void onInitialize(){
super.onInitialize();
PageParameters params=getPage().getPageParameters();
字符串JOBNUMBER=params.get(“JOBNUMBER”).toString();
字符串OBJECTTYPE=params.get(“OBJECTTYPE”).toString();
字符串OBJECTNUMBER=params.get(“OBJECTNUMBER”).toString();
如果(作业编号!=null){
LOGGER.info(“JOBNUMBER!=null”);
列表=Utils.retrieve(作业编号);
}否则{
list=Utils.retrieve(OBJECTTYPE,OBJECTNUMBER);
}
DataView DataView=新数据视图(“作业”,新列表数据提供程序(列表)){
@凌驾
配置()中的公共无效{
super.onConfigure();
setVisible(getDataProvider().size()>0);
}
@凌驾
受保护的无效填充项(最终项){
最终作业作业=(作业)项。getModelObject();
链接链接链接=新链接(“parentJobLink”){
@凌驾
公共void onClick(){
PageParameters p2=新的PageParameters();
p2.添加(“jobNumber”,job.getParentJob());
JobDetails.this.replacetwith(新的ParentJobDetails(“innerpanel”,p2));
}
};
添加(新标签(“parentJobLabel”,job.getParentJob());
项目。添加(plink);
添加(新标签(“jobType”,job.getJobType());
添加(新标签(“whoSubmitted”,job.getWhoSubmitted());
添加(新标签(“objectType”,job.getObjectType());
添加(新标签(“objectNumber”,job.getObjectNumber());
添加(新标签(“objectRevision”,job.getObjectRevision());
添加(新标签(“jobStatus”,job.getJobStatus());
}
};
dataView.setItemsPerPage(20);
添加(数据视图);
添加(新的CustomPagingNavigator(“navigator”,dataView));
if(list.size()==0){
替换为(新的(SearchInnerPanel(“innerpanel”,参数));
}
}
}


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

您建议将检索移动到父级中的建议绝对正确。它的工作方式与我希望的完全相同。谢谢