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