2009-05-05 7 views
1

Я новичок в Граалей и у меня есть проблема:Grails Повторяющиеся Сообщения об ошибках

У меня есть этот фрагмент GSP:

<g:form url="[controller:'main',action:'login']"> 
    <label for="name">Usuario:</label><br/> 
    <input type="text" name="name" /><br/> 
    <label for="pass">Password:</label><br/> 
    <input type="password" name="password"/><br/> 
    <input type="submit" value="Login"/><br/> 
    <g:renderErrors bean="${cmd}"/> 
</g:form> 

Контроллер (MainController.groovy) использует командный объект, здесь код для обоих:

def login = { LoginCommand cmd -> 
    if(cmd.validate()){ 
    redirect(action:'ok') 
    }else{ 
    render(view:'index',model:[cmd:cmd]) 
    } 
    } 

class LoginCommand { 

     String name 
     String password 

     static constraints = { 
       name(blank:false,size:5..10) 
       password(blank:false,size:5..10) 
     } 
} 

проблема заключается в том, что, когда я ввожу плохое имя или пропуск (пустой или вне диапазона) он показывает мне 4 ошибки, два пароля и два для нас ername. Они одинаковы, но дублируются.

я обнаружил, что создание метода «BOOL validateCommand() {имя & & пароль}» и заменить его на command.validate() не бросать дубликатов, но я хочу использовать ограничения возможности Grails, чтобы держать вещи DRY ,

Любая идея, почему это происходит? Спасибо!

ответ

8

Когда вы вводите объекты команды в действия контроллера, Grails выполняет автоматически validate(), поэтому нет необходимости называть его вручную. Попробуйте

if(!cmd.hasErrors()) 

вместо

if(cmd.validate()) 

Кажется, что каждый вызов validate() добавляет новые (дублирующие) ошибки в объект команды. ИМХО это не должно произойти и, вероятно, это ошибка в Grails. Вы должны рассмотреть этот вопрос reporting.

+0

Это только спасло мое здравомыслие. Спасибо –

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