【问题标题】:JSF2 enum h:selectOneMenuJSF2 枚举 h:selectOneMenu
【发布时间】:2011-07-29 01:00:11
【问题描述】:

我正在尝试在 JSF2 项目中使用带有 h:selectOneMenu 框的枚举。

到目前为止我得到了什么:

枚举:

public enum MyType {
  TEST,
  ME;        
}

支持 bean:

@ManagedBean
public class MyBean {
  private MyType type;
  public MyType[] getTypes {
    return MyType.values;
  }
  public void setType(MyType type) {
    this.type = type;
  }
  public MyType getType() {
    return this.type;
  }
}

xhtml 页面:

<h:selectOneMenu id="mySelection" 
  value="#{myBean.type}">
  <f:selectItems value="#{myBean.types}" />
</h:selectOneMenu>

我的问题是值显示正确但没有保存(我实际上是在 seam3 休眠项目中使用它)。当我使用自定义验证器尝试它时,我看到 setType 方法被调用了两次,第二次使用 null -> 导致没有保存任何内容。 我错过了什么吗?

到目前为止,我已经检查了以下主题:
* jsf-2-0-use-enum-values-for-selectonemenu
* jsf-2-0-use-enum-in-selectmany-menu
* jsf-best-way-to-enum-internationalization-i18n

非常感谢您的帮助,
斯蒂芬

【问题讨论】:

    标签: java jsf selectonemenu


    【解决方案1】:

    在这种特殊情况下,您应该根本不需要自定义转换器。 JSF 有一个内置的枚举转换器。仅当您有 List&lt;SomeEnum&gt; 而不是 SomeEnum 作为值时,才必须使用枚举的自定义转换器。另见Use enum in h:selectManyCheckbox

    除了由于两种方法中缺少括号而导致的两个编译错误之外,到目前为止发布的代码看起来还不错,应该可以正常工作。您的问题可能是由您为简单起见从问题中省略的其他内容引起的。

    【讨论】:

    • 感谢您的帮助。终于可以解决我的问题了 - xhtml 页面中有一个混淆。
    猜你喜欢
    • 2012-11-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 2015-08-08
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多