Wicket 向导叶面板传递参数

Wicket 向导叶面板传递参数,wicket,Wicket,首先祝大家新年快乐 我正在将我的数据表从网页移动到面板中。我使用pageparameters在单击用于检索数据并在下一页中显示的链接时传递所需的参数。现在我已经将这些表移动到面板中,我不知道如何在面板中转发这些参数 我的呼叫方式: final TextField<String> jobnumber = new TextField<String>("jobnumber ", Model.of("")); jobnumber .setRequired(true

首先祝大家新年快乐

我正在将我的数据表从网页移动到面板中。我使用pageparameters在单击用于检索数据并在下一页中显示的链接时传递所需的参数。现在我已经将这些表移动到面板中,我不知道如何在面板中转发这些参数

我的呼叫方式:

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);
我试图用IModel替换PageParameters,但没有成功。 请建议。
谢谢

我会使用
IModel
。您可以在面板中创建一个,如下所示:

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

        }
    });
}}
公共类作业面板扩展面板{
PublicJobPanel(字符串id、字符串jobnumber、字符串jobtype){
超级(id);
IModel jobListModel=新的ListModel(检索作业(作业编号、作业类型));
添加(新列表视图(“agilejobs1”,作业列表){
@凌驾
受保护的void populateItem(列表项){
最终作业作业=(作业)项。getModelObject();
添加(新标签(“jobNumber”,job.getJobNumber());
添加(新标签(“jobdesc”,job.getJobdesc());
添加(新标签(“jobcount”,job.getJobCount());
}
});
}}
但是,最好在面板外部构造
IModel
,并将其作为参数传递。模型的创建/设置可以在一个页面、一个
onSubmit()
表单或任何您喜欢的方法中完成。然后,代码变得更加清晰,因为
作业面板
只负责显示数据

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

        }
    });
}}