2015-01-21 26 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