2015-01-21 30 views
0

嗨,我一直在为此奋斗一段时间。你能否提出改变建议。在#oninitilize中添加检票面板

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)"*** 
    } 
} 
} 

情景:当我找工作,如果作业存在作业将显示在此面板中,如果作业不存在被重定向回搜索面板。我无法重新导向到搜索面板。

回答

0

下面是代码看起来应该很喜欢:

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

您完全正确地建议将回归迁移到父项。它完全像我想要的那样工作。谢谢 – UKK 2015-01-21 14:57:40