私のページには、列挙型に基づいて値が入力されるドロップダウンがあり、選択すると列挙型の値も設定されます。ドロップダウンに「値を選択してください」などのテキストを表示する必要がありますが、列挙型には表示されません。
ユーザーがドロップダウンから値を選択しないことも可能です。
ユーザーが値を選択しない場合、列挙型を変更せずに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>