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

Java 如何在Wicket DropDownChoice中将值设置为默认选项,java,user-interface,wicket-6,Java,User Interface,Wicket 6,我需要创建一个wicket dropdownchoice组件,我可以通过设置将默认的“Choose One”文本替换为“All” 在其属性文件中。我还想将“All”的值设置为-1,但无法完成 <select> <option selected="selected" value>All</option> <option value="1">Not Started</option> <option value="2">In Pr

我需要创建一个wicket dropdownchoice组件,我可以通过设置将默认的“Choose One”文本替换为“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>

全部的
没有开始
进行中
完成

为此,您必须将下拉选项设置为不允许
null
值,并将
-1
添加到允许/可能的值列表中。
最后,您必须使用以下命令实例化它:
new DropDownChoice(“compId”,Model.of(-1),Arrays.asList(-1,1,2,3),choiceRender)
,也就是说,
-1
应该设置为默认的模型对象,因此它在标记中被选中。我不确定您是否得到了martin point。我将给出一些简单的解决方案来解决您的问题。 假设您有
SelectionOption
类,您有
key
value

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"));
输出:

<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>

全部的
没有开始
进行中
完整的

工作起来很有魅力。通过这种方式,显示是正确的,但在提交表单后,不会获取下拉列表中的值。该值始终为空。第一个模型似乎是问题的根源。提交过程中一定有问题。您是否看到为select元素提交的值正确?
        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>