Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Grails GORM & Enums

I've a problem using Enumeration in Grails: I try to use an enumeraion in a grails domain object

code:

    package it.xxx.tools.kanban

    import java.util.Date;

    class Task {

        String name
        String description

        Priority priority

 static belongsTo = [user:User, project:Project]

        static constraints = {
           name(nullable:false, maxSize:25)
           description(nullable:false, maxSize:1500)
           priority(nullable:true)
        }
    }

package it.xxx.tools.kanban;

public enum Priority {

 VERY_LOW("Very Low"),
 LOW("Low"),
 MEDIUM("Medium"),
 HIGH("High"),
 VERY_HIGH("Very High")

 private final String value

 Priority(String value){
  this.value = value;
 }

 String toString() {
  value
 }

 String getKey() {
  name()
 }

 static list(){
  [VERY_LOW, LOW, MEDIUM, HIGH, VERY_HIGH]
 }
}

<tr class="prop">
    <td valign="top" class="name">
    <label for="priority">Priority:</label>
    </td>
    <td valign="top" class="value                          ${hasErrors(bean:taskInstance,field:'priority','errors')}">
    <g:select from="${it.weservice.tools.kanban.Priority?.values()}" value="${taskInstance?.priority}" name="priority" noSelection="['':'']"></g:select>
    </td>
</tr>

I use the grails generate-all command

When I try to save via the web application the Task object I have the following error:

Failed to convert property value of type [java.lang.String] to required type [it.weservice.tools.kanban.Priority] for property priority; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [it.weservice.tools.kanban.Priority] for property priority: no matching editors or conversion strategy found
like image 559
pbanfi Avatar asked Dec 28 '09 13:12

pbanfi


1 Answers

I answer my own question because other user can find it usefull: i checked the grails tips regarding enums here (bottom of the page) In my implementation I forgot the optionKey="key" in the g:select tag

Adding that all woked smoothly

like image 148
pbanfi Avatar answered Nov 02 '22 17:11

pbanfi