f:selectItem中的枚举:如何将选定的值传递给bean?

时间:2019-10-31 20:39:33

标签: java jsf

我想使用一个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;
    }
}

Bean1

@ManagedBean
@ApplicationScoped
    public class Data {
    public Color[] getColors() {
        return Color.values();
    }
}

Bean2

@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());
    }
}

xhtml

<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没有用选定的值初始化。 我确定这是基本的东西...

1 个答案:

答案 0 :(得分:0)

bean.color#{bean.color}中应更改为<h:selectOneMenu value="bean.color">

请您尝试一下吗?

相关问题