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

问题描述 投票:-1回答:1

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

java jsf
1个回答
0
投票

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

您可以尝试一下吗?

© www.soinside.com 2019 - 2024. All rights reserved.