使用choicerenderer下拉选项,如何获取值

时间:2015-07-20 22:43:23

标签: wicket dropdownchoice

我在尝试获取某些值时遇到问题。这是我的情况(检票口)

我有一个dropdownchoice study_template,我没有填充DDC的问题,问题是当我试图获得一些价值(id或名称)。这是代码

ChoiceRenderer choiceRenderer = new ChoiceRenderer("name", "id");
study_template  = new DropDownChoice( "study_template",new PropertyModel( this, "selectedTemplate" ),template_names , choiceRenderer);

template_names是一个列表< SelectOption>使用从DB获得的值。这很好用。

这是我用来填充DDC的类

public class SelectOption implements java.io.Serializable {
    private long id; 
    private String  name;
    public SelectOption(long id, String name ) {
        this.id = id; this.name=name;
    }

     public long getId() 
        {return id; } 

        public String getName() 
        {return name; } 
}

通常我可以通过study_template.getModelObject()获取值,但在这种情况下它不起作用,我没有任何关于获取id和名称的想法,我知道我需要GETID()和GETNAME(),但我不知道如何使用它,任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容:


public class SpikePage extends WebPage {

    class Person {

        String id;
        String name;

        public Person(String id, String name) {
            this.id = id;
            this.name = name;
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

    public SpikePage() {

        Person employee = new Person("E001", "ABC");
        Person manager = new Person("E002", "XYZ");

        List personList = new ArrayList(2);
        personList.add(employee);
        personList.add(manager);

        Form form = new Form("form");

        final DropDownChoice personDropDownChoice = new DropDownChoice("person", new ArrayList(personList), new IChoiceRenderer() {
            @Override
            public Object getDisplayValue(Person object) {
                return object.getId().concat("-").concat(object.getName());
            }

            @Override
            public String getIdValue(Person object, int index) {
                return object.getId();
            }
        });

        personDropDownChoice.setOutputMarkupId(true);
        personDropDownChoice.setNullValid(false);
        form.add(personDropDownChoice);

        final Label label = new Label("name");
        label.setOutputMarkupId(true);
        form.add(label);

        personDropDownChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") {
            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                Person selectedPerson = personDropDownChoice.getModelObject();
                label.setDefaultModelObject("Hi ".concat(selectedPerson.getName()));
                target.add(label);
            }
        });

        add(form);
    }
}

答案 1 :(得分:0)

感谢您的回答,我已经开始工作了

我用这个

private SelectOption selectedTemplate;

然后

selectedTemplate.getId();