簡體   English   中英

將Spring從3.0.x更新到3.1.2會導致表單選擇框不顯示列表字符串

[英]Updating Spring from 3.0.x to 3.1.2 causes form select box to not display list tostring

最近,我將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跟蹤我的依賴關系。 我要做的只是更新我的spring版本常數。 也許我需要更新其他依賴項?

謝謝

我實現了以下解決方案。 可以,因為我有一個較小的項目。 對於大型項目,這可能是不可接受的。

為我的枚舉添加了一個吸氣劑:

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"/>

現在這可以按預期工作。 就像我提到的那樣,這種解決方法對於大型項目可能是不可接受的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM