如何在Wicket DropDownChoice中将值设置为默认选项

时间:2017-07-12 23:13:39

标签: java user-interface wicket-6

我需要创建一个wicket下拉选择组件,我可以通过设置

将默认的“选择一个”文本替换为“全部”
nullValid=All
null=All

在其属性文件中。我还想将“All”的值设置为-1,但无法完成。

<select>
<option selected="selected" value>All</option>
<option value="1">Not Started</option>
<option value="2">In Progress</option>
<option value="3">Complete</option>
</select>

我想要的是

<select>
<option selected="selected" value="-1">All</option>
<option value="1">Not Started</option>
<option value="2">In Progress</option>
<option value="3">Complete</option>
</select>

2 个答案:

答案 0 :(得分:3)

为此,您必须将DropDownChoice设置为 not allow null值,并将-1添加到允许/可能值列表中。 最后,您必须使用:new DropDownChoice("compId", Model.of(-1), Arrays.asList(-1, 1, 2, 3), choiceRenderer)对其进行实例化,即-1应设置为默认模型对象,因此标记中为selected

答案 1 :(得分:0)

我不确定你是否有马丁点。我将提供一些解决您问题的简单解决方案。 我们假设你有SelectionOption课程,你有keyvalue

public class SelectOption {
    private String key;
    private String value;

    public SelectOption(String key, String value) {
        this.key = key;
        this.value = value;
    }
     // getter and setter
}

创建一个简单的selectOptions列表并传递给dropdownchoice

List<SelectOption> selectOptions = new ArrayList<>();
        selectOptions.add(new SelectOption("-1","ALL"));
        selectOptions.add(new SelectOption("1","Not Started"));
        selectOptions.add(new SelectOption("2","In Progress"));
        selectOptions.add(new SelectOption("3","Completed"));

// override show密钥和value的{​​{1}} choiceRender选项。我已经覆盖getDefaultChoice以删除选择的一个(我很方便),因为你已经删除了。

        add(new DropDownChoice("selectOption", selectOptions,new ChoiceRenderer<SelectOption>("value","key"){
            @Override
            public Object getDisplayValue(SelectOption object) {
                return object.getValue();
            }

            @Override
            public String getIdValue(SelectOption object, int index) {
                return object.getKey();
            }
        }){
            @Override
            protected CharSequence getDefaultChoice(String selectedValue) {
                return "";
            }
        });

输出:

<select wicket:id="selectOption" name="selectOption">
<option value="-1">ALL</option>
<option value="1">Not Started</option>
<option value="2">In Progress</option>
<option value="3">Completed</option>
</select>