2016-10-26 2 views
0

У меня есть некоторые пользовательские перечисления, на которые ссылаются при создании домена,Случайных Enum Усечение в Groovy

package locationEnums 

enum HazardType { 
    Particulates, 
    Chemicals, 
    Other 
} 

При создании() функции;

def create() { 
     new Location(
       name: params.name, 
       hazardsPresent: params.hazardsPresent, 
       hazardTypes: params.hazardTypes as HazardType[], 
       exposureArea: params.exposureArea as ExposureArea[], 
       exposureLevel: params.exposureLevel as RiskLevel, 
       comments: params.comments, 
       picture: params.picture.bytes, 
       survey: Survey.get(params.survey as int) 

     ).save() 

выполняется при выборе опасности, как «Chemical» я получаю следующее сообщение об ошибке:

URI: /location/create 
Class: java.lang.IllegalArgumentException 
Message: null 
Caused by: No enum constant locationEnums.HazardType.C 

Как вы можете видеть, что выбор «Chemical» усекается до «C», и я понятия не имею, почему это происходит. Любая помощь приветствуется.

+0

Возможно, стоит сделать println "params are $ params" в функции create, чтобы увидеть, можете ли вы определить этот HazardType.C в выводе. checkout queuekit plugin Я использовал перечисление для priorty - перечисление сидит в src/groovy и отлично работает в классе домена – Vahid

+0

@vahid Я запустил его в отладке и отслеживал параметры полностью. Они правильны, пока не попытаются сэкономить, а затем все испортит ... – Vince

+0

очень сложно комментировать, учитывая, что у вас нет .C в полях сохранения попробуйте def a = new Location (..) if (! A.save()) {println "errors $ {e.errors}"}, чтобы получить представление о том, какой объект в классе домена терпит неудачу, работал ли он раньше? – Vahid

ответ

0

Добавление этого метода к вашим enum могут решить проблему,

String getKey() { name() } 

Btw, что вы получаете в params.hazardTypes? Или как ваше поле ввода в GSP? Я полагаю, это <g:select .. multiple="multiple" ...>.

+0

Это пользовательский ''. Если это поможет. – Vince

0

Я решил проблему. То, как поступали данные, было массив строк. Поэтому до создания я перемещаю их из массива строк в arraylist типа enum.

Смежные вопросы