将参数传递给 wicket 面板
passing parameters to wicket panel
首先祝大家新年快乐。
我正在将我的数据表从网页移动到面板中。我使用 pageparameters 在单击 link 时传递所需的参数以检索数据并将其显示在下一页中。现在我已将这些表格移到面板中,我不确定如何在面板中转发这些参数。
我的调用方式:
final TextField<String> jobnumber = new TextField<String>("jobnumber ", Model.of(""));
jobnumber .setRequired(true);
final TextField<String> jobtype= new TextField<String>("jobtype", Model.of(""));
jobtype.setRequired(true);
Form form = new Form("form") {
@Override
public void onSubmit() {
final String jobnumber = jobnumber .getModelObject();
final String jobtype= jobtype.getModelObject();
PageParameters params= new PageParameters();
params.add("jobnumber ", jobnumber );
params.add("jobtype", jobtype);
new Job("jobs", params);
}
};
Button button = new Button("button");
form.add(button);
form.add(jobnumber);
form.add(jobtype);
add(form);
我的面板构造器:
public class Job extends Panel {
public Job(String id, **PageParameters params**) {
super(id);
String jobnumber = params.get("jobNumber").toString();
String jobtype= params.get("jobtype").toString();
add(new Label("jobNumberLabel", jobnumber));
add(new Label("jobtypeLabel", jobtype));
list = retrieveJob(jobnumber, jobtype);
add(new ListView("agilejobs1", list) {
@Override
protected void populateItem(ListItem item) {
final Job job = (Job) item.getModelObject();
item.add(new Label("jobNumber", job.getJobNumber()));
item.add(new Label("jobdesc", job.getJobdesc()));
item.add(new Label("jobcount", job.getJobCount()));
}
});
}
}
我曾尝试用 IModel 替换 PageParameters,但没有成功。
请建议。
谢谢
我会使用 IModel<List<Job>>
。您可以像这样在面板中创建一个:
public class JobPanel extends Panel {
public JobPanel(String id, String jobnumber, String jobtype) {
super(id);
IModel<List<Job>> jobListModel = new ListModel<Job>(retrieveJob(jobnumber,jobtype));
add(new ListView("agilejobs1", jobList) {
@Override
protected void populateItem(ListItem item) {
final Job job = (Job) item.getModelObject();
item.add(new Label("jobNumber", job.getJobNumber()));
item.add(new Label("jobdesc", job.getJobdesc()));
item.add(new Label("jobcount", job.getJobCount()));
}
});
}}
但是,最好在 Panel 外部构造 IModel<List<Jobs>>
并将其作为参数传递。模型的 creation/setting 可以在页面中完成,onSubmit()
可以在 Form
中完成,或者您喜欢的任何方法。然后代码变得更加清晰,因为 JobPanel
将只负责显示数据。
首先祝大家新年快乐。
我正在将我的数据表从网页移动到面板中。我使用 pageparameters 在单击 link 时传递所需的参数以检索数据并将其显示在下一页中。现在我已将这些表格移到面板中,我不确定如何在面板中转发这些参数。
我的调用方式:
final TextField<String> jobnumber = new TextField<String>("jobnumber ", Model.of(""));
jobnumber .setRequired(true);
final TextField<String> jobtype= new TextField<String>("jobtype", Model.of(""));
jobtype.setRequired(true);
Form form = new Form("form") {
@Override
public void onSubmit() {
final String jobnumber = jobnumber .getModelObject();
final String jobtype= jobtype.getModelObject();
PageParameters params= new PageParameters();
params.add("jobnumber ", jobnumber );
params.add("jobtype", jobtype);
new Job("jobs", params);
}
};
Button button = new Button("button");
form.add(button);
form.add(jobnumber);
form.add(jobtype);
add(form);
我的面板构造器:
public class Job extends Panel {
public Job(String id, **PageParameters params**) {
super(id);
String jobnumber = params.get("jobNumber").toString();
String jobtype= params.get("jobtype").toString();
add(new Label("jobNumberLabel", jobnumber));
add(new Label("jobtypeLabel", jobtype));
list = retrieveJob(jobnumber, jobtype);
add(new ListView("agilejobs1", list) {
@Override
protected void populateItem(ListItem item) {
final Job job = (Job) item.getModelObject();
item.add(new Label("jobNumber", job.getJobNumber()));
item.add(new Label("jobdesc", job.getJobdesc()));
item.add(new Label("jobcount", job.getJobCount()));
}
});
}
}
我曾尝试用 IModel 替换 PageParameters,但没有成功。 请建议。 谢谢
我会使用 IModel<List<Job>>
。您可以像这样在面板中创建一个:
public class JobPanel extends Panel {
public JobPanel(String id, String jobnumber, String jobtype) {
super(id);
IModel<List<Job>> jobListModel = new ListModel<Job>(retrieveJob(jobnumber,jobtype));
add(new ListView("agilejobs1", jobList) {
@Override
protected void populateItem(ListItem item) {
final Job job = (Job) item.getModelObject();
item.add(new Label("jobNumber", job.getJobNumber()));
item.add(new Label("jobdesc", job.getJobdesc()));
item.add(new Label("jobcount", job.getJobCount()));
}
});
}}
但是,最好在 Panel 外部构造 IModel<List<Jobs>>
并将其作为参数传递。模型的 creation/setting 可以在页面中完成,onSubmit()
可以在 Form
中完成,或者您喜欢的任何方法。然后代码变得更加清晰,因为 JobPanel
将只负责显示数据。