如何在 Wicket DropDownChoice 中将值设置为默认选择
How to set value to default choice in Wicket DropDownChoice
我需要创建一个 wicket dropdownchoice 组件,我可以通过设置
将默认 "Choose One" 文本替换为 "All"
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>
为此,您必须将 DropDownChoice 设置为 not 允许 null
值并将 -1
添加到 allowed/possible 值列表中。
最后你必须用new DropDownChoice("compId", Model.of(-1), Arrays.asList(-1, 1, 2, 3), choiceRenderer)
实例化它,即-1
应该设置为默认模型对象,所以它在标记中是selected
。
我不确定你是否得到了马丁点。我将提供一些简单的解决方案来解决您的问题。
假设您有 SelectionOption
class,您有 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
}
创建一个简单的select选项列表并传递给下拉选项
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
choiceRender 选项到 show
键和 value
。我已经覆盖 getDefaultChoice
以删除 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>
我需要创建一个 wicket dropdownchoice 组件,我可以通过设置
将默认 "Choose One" 文本替换为 "All"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>
为此,您必须将 DropDownChoice 设置为 not 允许 null
值并将 -1
添加到 allowed/possible 值列表中。
最后你必须用new DropDownChoice("compId", Model.of(-1), Arrays.asList(-1, 1, 2, 3), choiceRenderer)
实例化它,即-1
应该设置为默认模型对象,所以它在标记中是selected
。
我不确定你是否得到了马丁点。我将提供一些简单的解决方案来解决您的问题。
假设您有 SelectionOption
class,您有 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
}
创建一个简单的select选项列表并传递给下拉选项
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
choiceRender 选项到 show
键和 value
。我已经覆盖 getDefaultChoice
以删除 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>