0

最近我将 Spring 从 3.0.5 升级到 3.1.2。一切正常,除了在我的表单上,我的所有选择框都显示枚举值而不是之前显示的 toString 值。

我的枚举是:

public enum StateType {

    ALABAMA("AL", 1, "Alabama"),
          etc

    StateType(String abbreviation, int code, String displayText) {
        this.abbreviation = abbreviation;
        this.code = code;
        this.displayText = displayText;
    }

          public String toString() {
             return displayText;
          }
}

我的控制器然后有这个:

    @ModelAttribute("stateList")
public static StateType[] populateStateList() {
    return StateType.values();
}

我的表格有这个片段:

<form:select path="state" id="state" items="${stateList}" style="width:12em" dojoType="dijit.form.FilteringSelect"/>

这一切都在 3.0.5 中起作用。出于某种原因,在 3.1.2 中从未调用过 toString。我在屏幕上的选择框显示枚举常量 (ALABAMA)。

有什么改变的想法吗?我使用 maven 来跟踪我的依赖项。我所做的只是更新我的春季版本常量。也许我需要更新其他一些依赖项?

谢谢

4

1 回答 1

0

我实施了以下解决方案。这没关系,因为我有一个较小的项目。这对于大型项目可能是不可接受的。

为我的枚举添加了一个吸气剂:

public enum StateType { 

ALABAMA("AL", 1, "Alabama"), 
      etc 

StateType(String abbreviation, int code, String displayText) { 
    this.abbreviation = abbreviation; 
    this.code = code; 
    this.displayText = displayText; 
} 

public String getDisplayText() {
   return this.displayText;
}

      public String toString() { 
         return displayText; 
      } 

}

在表格上添加:

<form:select path="state" id="state" items="${stateList}" itemLabel="displayText" style="width:12em" dojoType="dijit.form.FilteringSelect"/>

这现在按预期工作。就像我提到的那样,这种解决方法对于大型项目可能是不可接受的。

于 2012-07-25T16:45:46.600 回答