In Grails Controller: Как можно назвать динамический метод, например Domain.findByName(params.name)
, а не Domain.findByName("X")
?вызов динамического метода Grails с переменным параметром
ответ
Ознакомьтесь с некоторыми 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}."])
}
}
}
}
Счастливый кодирования!
Спасибо за ваш ответ. Params.name получает свое значение от веб-вызова, такого как ../book/findAuthor?name="Odyssey ". Если в методе findAuthor внутри bookControler выполняется ... book.findByName («Одиссея»), он возвращает автора, но не выполняет execute.findByName (params.name)! Я также попробовал book.findByName («$ params.name»)! – ncaramolegos
Сделайте println (params.name), чтобы узнать, что это за значение. –
Я сделал это. Значение params.name имеет ожидаемое значение! – ncaramolegos
- 1. Вызов метода DebuggerDisplayAttribute с параметром
- 2. вызов метода JSTL с параметром
- 3. Вызов метода с неявным параметром
- 4. Вызов динамического метода
- 5. @ HTML.Raw с переменным параметром
- 6. Опоры с переменным параметром
- 7. Вызов метода obj-c с параметром
- 8. Удаленный вызов метода ejb с абстрактным параметром
- 9. Вызов универсального метода с параметром типа T
- 10. MissingMethodException вызов метода с родовым параметром
- 11. угловой директивный вызов метода контроллера с параметром
- 12. Java вызов метода с параметром массива
- 13. Вызов динамического метода класса JUNIT
- 14. Вызов метода с параметром или параметром по умолчанию в Scala
- 15. Вызов динамического метода из строки
- 16. Вызов динамического метода в C#
- 17. Вызов динамического метода без отражения
- 18. Вызов динамического метода фрагмент активности
- 19. Функция SQL с переменным параметром
- 20. 301 Redirect с переменным параметром
- 21. Кэширование Nginx с переменным параметром
- 22. Использование предупреждения с переменным параметром?
- 23. Javascript вызов метода ajax со строковым параметром
- 24. Вызов динамического метода в Objective-C
- 25. вызов динамического метода в дереве выражений
- 26. Вызов метода динамического объекта, реализующего общий интерфейс
- 27. Макет статического метода с параметром
- 28. Вызов метода MVC HttpPost (с параметром) с использованием HttpwebRequest
- 29. Вызов метода с общим параметром с отражением Java
- 30. Вызов управляемого API-метода с параметром VARIANT с C#
Вы можете просто написать params.name - вот оно! – sbglasius
убедитесь, что ваш параметр содержит правильное значение. например println params как первый оператор в вашем контроллере actoin. – hitty5
Этот вопрос не имеет ясности. Почему 'Domain.findByName (params.name)' не работает так же, как 'Domain.findByName (« X »)' if 'assert params.name ==" X "'. Пожалуйста, предоставьте дополнительную информацию. –