7

次のコンボボックスがあります。

<g:select name="ticketType" from="${app.domain.enums.TicketType?.values()}"
                              keys="${app.domain.enums.TicketType.values() }"
                              value="${ticketInstance?.ticketType}"
                              noSelection="${['null': 'Select One...']}"
                    />

コマンドオブジェクトの ticketType に次の制約を設定しました

ticketType nullable: true, blank:true

TicketType は非常に単純な列挙型です。

    public enum TicketType {
        QUESTION, SUPPORT, MAINTENANCE, NEW_FUNCTIONALITY, MALFUNCTION
}

そして、GSP で ticketType の値を設定しないたびに、次のエラーが発生します。

Failed to convert property value of type 'java.lang.String' to required type 'com.coming.enums.TicketPriority'

選択がない場合と同様です g:select は「null」(文字列)の値を設定します。

私は何が欠けていますか?

4

3 に答える 3

15

「null」リテラルを使用する代わりに、空の文字列を noSelection 属性として使用してみましたか? 例えばnoSelection="${['':'Select One...']}"?これにより、データ バインド中に真の null 値に適切に変換される場合があります。

于 2012-07-26T14:32:21.240 に答える
2

あなたのエラーが言うように - あなたはあなたの中に文字列を持っていますnoSelection. これは、列挙値のいずれにも変換できません。

あなたの引用符を削除するnullと、動作するはずです(grails 2.0で動作します):

<g:select name="ticketType" from="${app.domain.enums.TicketType?.values()}"
                          keys="${app.domain.enums.TicketType.values() }"
                          value="${ticketInstance?.ticketType}"
                          noSelection="${[null: 'Select One...']}"/>
于 2012-07-26T13:15:56.453 に答える