Auf meiner Seite habe ich eine Dropdown-Liste, deren Werte basierend auf einer Aufzählung gefüllt werden und die Auswahl legt auch den Wert der Aufzählung fest. Ich habe jetzt die Anforderung, Text wie "Bitte wählen Sie einen Wert" in der Dropdown-Liste anzuzeigen, und das ist nicht in enum vorhanden.Wie kann ich einen Wert in selectOne nicht in der enum anzeigen?
Es ist auch möglich, dass der Benutzer keinen Wert aus der Dropdown-Liste auswählt.
Wie kann man selectOne mit diesem zusätzlichen Text auffüllen, ohne Enum zu ändern und es in der verwalteten Bean zu handhaben, wenn der Benutzer keinen Wert auswählt (was für den Benutzer erlaubt ist). Ich habe verschiedene Kombinationen ausprobiert, aber nichts hat für mich funktioniert.
Hier ist, was ich arbeite, die Standard-Dropdown-Liste mit verschiedenen Werten enum nur einen Standard Weg gefüllt ist.
Dies ist Enum hier
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;
}
}
A Managed 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;
}
}
In XHTML
<h:selectOneMenu value="#{simplebean.selectedFruit}">
<f:selectItems value="#{simplebean.fruits}" />
</h:selectOneMenu>
versuchen Sie, die Werte beim Hinzufügen der Liste hart Code, anstatt es von ENUM zu bekommen. – UVM