在我的頁面上,我有一個下拉列表,其值根據枚舉進行填充,並且選擇也設置枚舉的值。我現在要求在下拉菜單中顯示「請選擇一個值」這樣的文本,並且不在enum中。如何顯示selectOne中的值不存在於枚舉中?
用戶也可以不從下拉菜單中選擇任何值。
如果用戶沒有選擇一個值(這對用戶來說是合法的),如何使用這個額外的文本填充selectOne而不修改枚舉並在託管bean中處理它。我嘗試了各種組合,但沒有爲我工作。
下面是我工作的是標準下拉列表填充不同的值枚舉只是一個標準的方式。
這是這裏
public enum Fruit {
APPLE("Apple"), ORANGE("Orange");
private String label;
Fruit(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
}
枚舉託管bean
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.model.SelectItem;
@ManagedBean
public class Simplebean {
private Fruit selectedFruit;// How would this work if the value is not valid enum .
private List<SelectItem>fruits = new ArrayList<SelectItem>();
@PostConstruct
public void init(){
for (Fruit fruit : Fruit.values()){
fruits.add(new SelectItem(fruit,fruit.getLabel()));// How to add a value not part of enum.
}
}
public List<SelectItem> getFruits() {
return fruits;
}
public void setFruits(List<SelectItem> fruits) {
this.fruits = fruits;
}
public Fruit getSelectedFruit() {
return selectedFruit;
}
public void setSelectedFruit(Fruit selectedFruit) {
this.selectedFruit = selectedFruit;
}
}
在XHTML
<h:selectOneMenu value="#{simplebean.selectedFruit}">
<f:selectItems value="#{simplebean.fruits}" />
</h:selectOneMenu>
嘗試在添加列表時嘗試對值進行硬編碼,而不是從ENUM中獲取值。 – UVM 2012-04-15 06:31:54