grails generate -объяснение всего кодирования

#grails

#grails

Вопрос:

Доброе утро всем,

У меня есть вопрос новичка относительно grails. Заранее большое спасибо за то, что помогли мне понять!

Я не понимаю коды в контроллере и представление, сгенерированное командой generate-all .

Это действие сохранения в контроллере книги.

 try {
            bookService.save(book)
} catch (ValidationException e) {
            respond book.errors, view:'create'
            return
}
  

Я продолжаю читать руководство снова и снова, но я просто не понимаю их терминов. Я не знаю, что ответить на данный момент. Я предполагаю, что ответ ОТПРАВИТ объект errors внутри book в представление create.

Это коды в представлении создания.

 <g:hasErrors bean="${this.book}">
   <ul class="errors" role="alert">
      <g:eachError bean="${this.book}" var="error">
         <li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>><g:message error="${error}"/></li>
      </g:eachError>
   </ul>
</g:hasErrors>
  

Итак, ${this.book} должно быть NULL . Я не вижу, что представление ищет $ {this.errors}, чтобы получить сообщение об ошибке, отправленное контроллером. Я не получаю после того, как объект ошибок отправляется в представление, откуда ${error.field} .

Спасибо!!!

Ответ №1:

Хорошо, я понял это. Контроллер привязывает объект book.errors к представлению create.

 respond book.errors, view:'create'
  

Однако представление не использует объект book.errors для отображения ошибки сохранения.

 <g:eachError bean="${this.book}" var="error">
  

${this.book} не является book.errors . Изначально я так и думал.book — это указатель, указывающий на book.errors . Я был неправ.

$ {this.book} — это объект book, определенный в контроллере. Представление вообще не использует объект book.errors.