【问题标题】:Use Spring options tag to display enum's toString value使用 Spring options 标签显示枚举的 toString 值
【发布时间】:2010-10-07 08:25:04
【问题描述】:

我将 Spring 用于 HTML 表单。其中一个字段是enum,因此我想要一个 HTML 下拉列表(<option> 标记)。我的枚举名称与 toString() 值不同。例如:

public enum Size {
    SMALL("Small"), LARGE("Large"), VERY_LARGE("Very large");

    private final String displayName;

    private Size(String displayName) {
        this.displayName = displayName;
    }

    public String toString() {
        return displayName;
    }
}

我希望用户看到 toString() 值。通常这是使用 Spring 选项标签的 itemLabel 来完成的。

<form:options items="${enumValues}" itemLabel="beanProperty" />

toString() 不是 bean 属性,因为它不以“get”开头。有没有办法将itemLabel 设置为使用toString 的值而无需创建getter?

【问题讨论】:

    标签: java spring jsp enums


    【解决方案1】:

    为什么不向您的枚举添加公共 getDisplayName() 方法?

    【讨论】:

    • 我试图避免向每个枚举添加这个额外的方法。枚举不能扩展也无济于事。
    【解决方案2】:

    您是否尝试过使用 Spring 强大的 AOP 模型从一个地方扩展您的枚举?看起来,根据您拥有的枚举数量,您可以轻松地向所有枚举添加一个 getDisplayName() 方法,该方法只返回它们的 toString() 值。

    【讨论】:

      【解决方案3】:

      我知道这已经有几年了,现在必须解决,但我想我会为未来的人添加解决方案。

      只需删除 [itemLabel="beanProperty"] 部分。它将使用 toString 打印值。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多