1

ENum値でspringmvcformselectを使用しようとしています。選択した値を入れることができません。

これは列挙型です:

public enum MessagesType {

SL(4, 0, 9000000, 9999999), 
BL(1,2, 1000000, 1999999);

private Integer moduleCode;

private Integer subModuleCode;

private Integer rangeMin;

private Integer rangeMax;

    MessagesType(Integer moduleCode, Integer subModuleCode, Integer rangeMin, Integer rangeMax) {
        this.moduleCode = moduleCode;
        this.subModuleCode = subModuleCode;
        this.rangeMax = rangeMax;
        this.rangeMin = rangeMin;
    }

... (getters ans setters)

これはフォーム呼び出しです:

<td><form:label path="type">message type:</form:label></td>
                <td>
                    <form:select path="type"  items="${messagesTypes}" itemValue="${messageEditContextDto.type}" />
                </td>

messageEditContextDtoは、必要なタイプと他のフィールドの束を保持するモデルBeanです。

public class MessageEditContextDto implements Serializable {

    private MessagesType type;

    ... 
}

この例外が発生します: org.springframework.beans.NotReadablePropertyException:Beanクラス[com.sapiens.alis.updater.domain.enums.MessagesType]の無効なプロパティ'SL':Beanプロパティ'SL'が読み取れないか、無効なゲッターがありますメソッド:ゲッターの戻りタイプはセッターのパラメータータイプと一致しますか?

助けてください...

ありがとうIdob

4

1 に答える 1

3

これは、通常、列挙型の値を取得する方法です。簡単にするために、コードを少し変更します。

public enum MessagesType {
    SL("4"), 
    BL("2");

    private String value;

    private MessagesType(String theValue) {
        this.value = theValue;
    }

    public String getValue() {
        return this.value 
    }
}

フォームコール:

    <td><form:label>message type:</form:label></td>
    <td>
          <form:select path="type">
              <!-- Characters edition-->
              <c:forEach var="item" items="${MessagesType.values}">
                  <form:option value="{item.value}"><spring:eval expression="item"/></form:option>
              </c:forEach>
          </form:select>
    </td>

これにより、目標を達成するための方法についてのアイデアが得られます。

于 2013-01-17T16:05:57.583 に答える