我想将selectOneMenu
下拉列表与Enum
值一起使用。我可以很好地显示这些值,但无法将所选的值传递回Bean。
public enum Color {
RED("Red"), BLUE("Blue"), GREEN("Green");
private String label;
private Color(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
}
@ManagedBean
@ApplicationScoped
public class Data {
public Color[] getColors() {
return Color.values();
}
}
@ManagedBean(name="bean")
@SessionScoped
public class TestBean {
private Color color;
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
public void submit() {
System.out.println(color.getLabel());
}
}
<h:body>
<h:form>
<h:selectOneMenu value="bean.color">
<f:selectItems value="#{data.colors}" var="color" itemValue="#{color}" itemLabel="#{color.label}"/>
</h:selectOneMenu>
<h:commandButton value="Submit" action="#{bean.submit}" />
</h:form>
<h:outputText value="#{bean.color}" />
</h:body>
提交后,在NullPointerException
功能中,由submit()
导致500。问题是bean.color
没有用所选值初始化。我确定这是基本的东西...
[bean.color
应更改为#{bean.color}
中的<h:selectOneMenu value="bean.color">
您可以尝试一下吗?