вопрос grails (образец 1 книги Grails To Action) с контроллером и сервисом - PullRequest
1 голос
/ 17 июня 2010

Я делаю пример Grails To Action для первой главы.Все было хорошо, пока я не начал работать со Службами.Когда я запускаю приложение, у меня появляется следующая ошибка:

groovy.lang.MissingPropertyException: No such property: quoteService for class: qotd.QuoteController

at qotd.QuoteController$_closure3.doCall(QuoteController.groovy:14)

at qotd.QuoteController$_closure3.doCall(QuoteController.groovy)

at java.lang.Thread.run(Thread.java:619)

Вот мой класс QuoteService в Groovie, в котором есть ошибка в определении GetStaticQuote (ОШИБКА: Groovy: невозможно разрешить класс Quote)

 package qotd

    class QuoteService {

 boolean transactional = false

 def getRandomQuote() {
  def allQuotes = Quote.list()
  def randomQuote = null
  if (allQuotes.size() > 0) {
   def randomIdx = new Random().nextInt(allQuotes.size())
   randomQuote = allQuotes[randomIdx]
  } else {
   randomQuote = getStaticQuote()
  }
  return randomQuote
 }

 def getStaticQuote() {
  return new Quote(author: "Anonymous",content: "Real Programmers Don't eat quiche")
 }
     }

Eclipse показывает мне флаг ошибки при определении getStaticQuote:

ERROR: Groovy:unable to resolve class Quote

Любые подсказки?

Контроллер Groovieкласс

package qotd

class QuoteController {

   def index = {
     redirect(action: random)
   }

   def home = {
     render "<h1>Real Programmers do not each quiche!</h1>" 
   }

  def random = {
     def randomQuote = quoteService.getRandomQuote()
     [ quote : randomQuote ]
   }

  def ajaxRandom = {
     def randomQuote = quoteService.getRandomQuote()
     render "<q>${randomQuote.content}</q>" +
     "<p>${randomQuote.author}</p>"
   }
}

Цитата Класс:

package qotd

class Quote {
   String content
   String author
   Date created = new Date()

   static constraints = {
     author(blank:false)
     content(maxSize:1000, blank:false) 
    }
}

Я делаю образцы с использованием STS.Любой совет?

С уважением,

Франциско

Ответы [ 3 ]

3 голосов
/ 17 июня 2010

сделать

def quoteService

в верхней части вашего контроллера, и он будет автоматически введен в контроллер

0 голосов
/ 21 августа 2011

Я сделал

def quoteService = new QuoteService ()

, и это решило мою проблему

0 голосов
/ 17 июня 2010

groovy.lang.MissingPropertyException: Нет такого свойства: quoteService для класса: qotd.QuoteController

Я не кодирую в grails, но похоже, что вам нужно объявить quoteService где-то в контроллере.

...