2012-02-22 14 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 
    } 

は今、私はTAXのような素敵な出力を得ます。

しかし、ユーザーが<select>から税を選択し、送信された値が23.0%がGrailsのTaxRateインスタンスを取得/作成することができないということである。すなわちときに何が起こるか...私はこのカスタムをサポートするためにオーバーライドする必要がありますどのような

マッピング?上書きしようとすると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

これは1つのENUMで動作しますが、複数のENUMSで文字列値を使用する場合はどうなりますか? – bitfidget

関連する問題