2011-09-21 4 views
-3

In Grails Controller: Как можно назвать динамический метод, например Domain.findByName(params.name), а не Domain.findByName("X")?вызов динамического метода Grails с переменным параметром

+0

Вы можете просто написать params.name - вот оно! – sbglasius

+0

убедитесь, что ваш параметр содержит правильное значение. например println params как первый оператор в вашем контроллере actoin. – hitty5

+1

Этот вопрос не имеет ясности. Почему 'Domain.findByName (params.name)' не работает так же, как 'Domain.findByName (« X »)' if 'assert params.name ==" X "'. Пожалуйста, предоставьте дополнительную информацию. –

ответ

1

Ознакомьтесь с некоторыми Grails Turorials и более конкретно, как работает тег формы Grails here! Вам нужно понять, как работает основной поток модели MVC, чтобы наслаждаться силой Grails! Потратьте некоторое время, чтобы узнать это, или просто потеряли и разочаровали.

В вашем примере params.name обычно заполняется формой сообщения с использованием тега ввода, такого как g:textField.

Если вы хотите увидеть, какие значения включены PARAMS объекта для конкретного контроллера вызова, который вы могли бы сделать что-то вроде ....

class IceCreamController{ 

    def eatMoreIceCream = { 
     println("the params are ${params}"); //<-- prints a Map of the values to the stdout 

     if (!params.name){ 
      redirect(action:"showError",params:[message:"You have no name!"]) 
     }else{ 
      def iceCream = IceCream.findByName(params.name) 

      if (iceCream){ 
       redirect(action:"showIceCream",params:[id:iceCream.id]) 
      }else{ 
       redirect(action:"showError",params:[message:"no ice cream for name ${params.name}."]) 
      } 

     } 

    } 

} 

Счастливый кодирования!

+0

Спасибо за ваш ответ. Params.name получает свое значение от веб-вызова, такого как ../book/findAuthor?name="Odyssey ". Если в методе findAuthor внутри bookControler выполняется ... book.findByName («Одиссея»), он возвращает автора, но не выполняет execute.findByName (params.name)! Я также попробовал book.findByName («$ params.name»)! – ncaramolegos

+0

Сделайте println (params.name), чтобы узнать, что это за значение. –

+0

Я сделал это. Значение params.name имеет ожидаемое значение! – ncaramolegos

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