2

在检票口形式中,我有一个 DropDownChoice,我想在其中取一个选定的值。我有:

private final List<DimSpecific> specificList;
private DimSpecific specificPtr = null;
...
specificList = roles.getSpecificList();
specificPtr = new DimSpecific();
DropDownChoice specific = new DropDownChoice("specific", new Model<>(specificPtr), specificList, new ChoiceRenderer<DimSpecific>("code", "id"));
Form form = new Form("frm_0_07"){
    @Override
    protected void onSubmit() {
        String specificSelected = specificPtr.getCode();
    }
}

并且变量specificSelected等于null。我怎样才能获得选定的价值?

4

2 回答 2

1

您是否已将 DropdownChoice 添加到表单中?

您传入的模型对象将被更新 - 而不是对象本身。在您的情况下,它是一个未分配的变量 (new Model<>(specificPtr)),因此您无法从中读取。

试试这个:

private final List<DimSpecific> specificList;
private DimSpecific specificPtr = new DimSpecific(); // or init to some default value
private IModel<DimSpecific> dropdownModel = new PropertyModel<DimSpecific>(this, "specficicPtr");
...
specificList = roles.getSpecificList();
DropDownChoice specific = new DropDownChoice("specific", dropdownModel , specificList, new ChoiceRenderer<DimSpecific>("code", "id"));
Form form = new Form("frm_0_07"){
    @Override
    protected void onSubmit() {
        String specificSelected = dropdownModel.getObject();
    }
}

这也将使 specificPtr 等于所选值 - 原因是 PropertyModel 告诉下拉选择在哪里 setObject() 为所选下拉提交 - 到 specificPtr。

于 2014-11-15T21:13:26.707 回答
0

试试这个:

List<DimSpecific> list = getList(); //not importent
Model<DimSpecific> dimSpecificModel = new Model<DimSpecific>();
ChoiceRenderer<DimSpecific> choiceRenderer = new ChoiceRenderer<>("code", "id");
DropDownChoice<DimSpecific> choice = new DropDownChoice<DimSpecific>("specific", dimSpecificModel, list, choiceRenderer);

Button button = new Button("button", Model.of("")){
    @Override
    public void onSubmit() {
        System.out.println(dimSpecificModel.getObject());
    }
};
于 2018-04-10T00:44:20.130 回答