2012-02-22 3 views
4

나는 나의 열거에서 사용자 지정 toString 방법이있다 : 23.0 % : 나는 HTML의 요금을 표시 할 때 Grails는 String을 Enum으로 어떻게 변환합니까?

enum TaxRate implements Serializable { 
    RATE23(23.0), 
    ... 

    private String s 
    private BigDecimal rate 

    private TaxRate(BigDecimal s) { 
     this.s = s + "%" 
     this.rate = s * 0.01 
    } 

    public String toString() { 
     return s 
    } 

는 지금은 세금처럼 좋은 출력을 얻을.

그러나 사용자가 <select>에서 세금을 선택하고 전송 값이 23.0% Grails의이 TaxRate 인스턴스를 가져/생성 할 수 있다는 것입니다 즉, 때 무슨 ...이 사용자를 지원하기 위해 오버라이드 (override) 할 필요가 무엇

매핑? 재정의하려는 valueOf(String)의 오류로 끝났습니다 ..

답변

6

bottom of this page에서 항목을 보았습니까? 당신이 요소에서 "값"문자열 속성 (꽤 일반적인 관용구)와 함께 열거를 사용하려면

,이 시도 :

enum Rating { 
    G("G"),PG("PG"),PG13("PG-13"),R("R"),NC17("NC-17"),NR("Not Rated") 

    final String value 

    Rating(String value) { this.value = value } 

    String toString() { value } 
    String getKey() { name() } 
} 

를 다음 태그에 optionKey="key"를 추가 .

+0

이것은 하나의 ENUM에서 작동하지만 문자열 값을 사용하려는 ENUMS가 여러 개인 경우 어떻게됩니까? – bitfidget