【问题标题】:Enum in f:selectItem: how to pass selected value to bean? [duplicate]f:selectItem 中的枚举:如何将选定的值传递给 bean? [复制]
【发布时间】:2019-10-31 20:39:33
【问题描述】:

我想使用带有Enum 值的selectOneMenu 下拉菜单。我可以很好地显示这些值,但我无法将选定的值传递回 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;
    }
}

豆1

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

豆2

@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>

在提交时,我在 submit() 函数中得到由 NullPointerException 引起的 500。问题是bean.color 没有使用所选值进行初始化。 我敢肯定这是一些基本的东西......

【问题讨论】:

  • 另外,我注意到属性 varitemValue var="color"itemValue="#{color}" itemLabel="#{color.label}"/>
  • 谢谢,这里的帖子中缺少空格是格式错误,已更正。至于它从来没有用过:根据这个thread 它应该可以工作,不是吗?
  • 啊,明白了。道歉,因为它没有帮助。一件小事,如果它有帮助... bean.color 需要更改为 #{bean.color} in &lt;h:selectOneMenu value="bean.color"&gt;

标签: java jsf


【解决方案1】:

bean.color 应在&lt;h:selectOneMenu value="bean.color"&gt; 中更改为#{bean.color}

你可以试一试吗?

【讨论】:

  • 天啊。谈论基本...
  • 哈哈@rookie_senior - 很多时候它也发生在我身上。轻微失误。很高兴它有帮助。祝你好运:)
猜你喜欢
  • 1970-01-01
  • 2023-02-06
  • 2011-08-15
  • 2021-07-25
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
相关资源
最近更新 更多