2011-06-07 42 views
0

當我嘗試提交html選項選擇表單時,出現以下錯誤,所選選項值未轉換爲受尊重的枚舉類型。Spring @ModelAttribute,http post參數轉換失敗

未能將'java.lang.String'類型的屬性值轉換爲屬性'portalLayoutLocation'所需的類型'net.mis.lookup.model.PortalLayoutLocation';嵌套異常是java.lang.IllegalStateException:無法將屬性「portalLayoutLocation」的[java.lang.String]類型值轉換爲所需類型[net.mis.lookup.model.PortalLayoutLocation]:未找到匹配的編輯器或轉換策略

<select name="portalLayoutLocation" id="portalLayoutLocation"> 
<option value="">Choose a PortalLayoutLocation</option> 
<option value="1">PortalLayoutLocation.HEADER_MAIN_LOGO</option> 
<option value="2">PortalLayoutLocation.HOMEPAGE_TECHNICAL_TIP_OF_THE_DAY</option 
<option value="3">PortalLayoutLocation.HOMEPAGE_CARTOON_OF_THE_DAY</option> 
<option value="4">PortalLayoutLocation.FOOTER_LOGO</option> 
<option value="5">PortalLayoutLocation.PORTAL_HEADER_MAIN_ADVERTISEMENT</option> 
<option value="6">PortalLayoutLocation.PORTALHOMELAYOUT_HOMECONTENT_ADVERTISEMENT</option> 
<option value="7">PortalLayoutLocation.PORTALHOMELAYOUT_WIDESIDEBAR_ADVERTISEMENT</option> 
<option value="8">PortalLayoutLocation.PORTALLAYOUT_NARROWSIDEBAR_ADVERTISEMENT</option> 
</select> 



public enum PortalLayoutLocation { 

    HEADER_MAIN_LOGO(1, "PortalLayoutLocation.HEADER_MAIN_LOGO"), 
    HOMEPAGE_TECHNICAL_TIP_OF_THE_DAY(2, "PortalLayoutLocation.HOMEPAGE_TECHNICAL_TIP_OF_THE_DAY"), 
    HOMEPAGE_CARTOON_OF_THE_DAY(3, "PortalLayoutLocation.HOMEPAGE_CARTOON_OF_THE_DAY"), 
    FOOTER_LOGO(4, "PortalLayoutLocation.FOOTER_LOGO"), 
    PORTAL_HEADER_MAIN_ADVERTISEMENT(5, "PortalLayoutLocation.PORTAL_HEADER_MAIN_ADVERTISEMENT"), 
    PORTALHOMELAYOUT_HOMECONTENT_ADVERTISEMENT(6, "PortalLayoutLocation.PORTALHOMELAYOUT_HOMECONTENT_ADVERTISEMENT"), 
    PORTALHOMELAYOUT_WIDESIDEBAR_ADVERTISEMENT(7, "PortalLayoutLocation.PORTALHOMELAYOUT_WIDESIDEBAR_ADVERTISEMENT"), 
    PORTALLAYOUT_NARROWSIDEBAR_ADVERTISEMENT(8, "PortalLayoutLocation.PORTALLAYOUT_NARROWSIDEBAR_ADVERTISEMENT"); 

    private int typeCode; 
    private String messageKey; 

    private PortalLayoutLocation(int typeCode, String messageKey) { 
     this.typeCode = typeCode; 
     this.messageKey = messageKey; 
    } 

    public int toInt() { 
     return typeCode; 
    } 

    public static PortalLayoutLocation fromInt(int value) { 
     switch (value) { 
      case 0: 
       return null; 
      case 1: 
       return HEADER_MAIN_LOGO; 
      case 2: 
       return HOMEPAGE_TECHNICAL_TIP_OF_THE_DAY; 
      case 3: 
       return HOMEPAGE_CARTOON_OF_THE_DAY; 
      case 4: 
       return FOOTER_LOGO; 
      case 5: 
       return PORTAL_HEADER_MAIN_ADVERTISEMENT; 
      case 6: 
       return PORTALHOMELAYOUT_HOMECONTENT_ADVERTISEMENT; 
      case 7: 
       return PORTALHOMELAYOUT_WIDESIDEBAR_ADVERTISEMENT; 
      case 8: 
       return PORTALLAYOUT_NARROWSIDEBAR_ADVERTISEMENT; 
      default: 
       throw new UnsupportedOperationException("Unexpected enum value : " + value); 
     } 
    } 

    public int getTypeCode() { 
     return typeCode; 
    } 

    public String getMessageKey() { 
     return messageKey; 
    } 

    public String getLocalozedMessage() { 
     return StaticMessageSource.getMessage(messageKey); 
    } 

    @Override 
    public String toString() { 
     return getLocalozedMessage(); 
    } 
} 
+1

你能發佈一些net.mis.lookup.model.PortalLayoutLocation'的'? – artbristol 2011-06-07 09:03:02

+0

附加「net.mis.lookup.model.PortalLayoutLocation」到問題 – Buddhi 2011-06-08 04:22:10

回答

0

使用HEADER_MAIN_LOGOHOMEPAGE_TECHNICAL_TIP_OF_THE_DAY,...的價值觀,而不是1,2,...