将参数传递给wicket面板

时间:2015-01-08 13:37:25

标签: wicket

首先祝大家新年快乐。

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

我的呼叫方法:

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,但它没有用。 请建议。 感谢

1 个答案:

答案 0 :(得分:0)

我会使用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>>并将其作为参数传递。模型的创建/设置可以在Page,onSubmit() Form或您喜欢的任何方法中完成。然后代码变得更加清晰,因为JobPanel只负责显示数据。

相关问题