Так что я думаю, что это ваша проблема:
Когда действие в контроллере завершается, ему нужно знать, что отправить обратно запрашивающему веб-браузеру.Существует два основных способа сообщить вашему приложению, куда (или куда) отправлять пользователя.
Redirect - этот параметр используется для того, чтобы приложение отправляло пользователя в другую часть вашегоприложение или на любой URL.Дополнительная информация может быть найдена здесь: http://grails.org/doc/latest/ref/Controllers/redirect.html
Render - Вы можете использовать это, чтобы сказать вашему приложению, что нужно визуализировать некоторый текст как ответ пользователю.Основными способами являются либо непосредственное указание текста, например, render "Hello"
, либо вы можете указать ему шаблон или представление (GSP) для использования при визуализации содержимого.Информация: http://grails.org/doc/latest/ref/Controllers/render.html
Я думаю, что ваша проблема в том, что если вы не используете ни один из них в своих действиях (а вы этого не сделали), тогда поведение по умолчанию - визуализация представления с тем же самымназовите как ваше действие .Поэтому я думаю, что ваше приложение пытается отобразить представление на user / search.gsp , которого (я полагаю) не существует.
Так что если вы измените свое действие, чтобы оно выглядело так:
def search = {
println("Hello 1")
render("Hello 2")
}
У вас не должно быть вашей ошибки, и вы должны увидеть, что "Hello 2" возвращено в веб-браузер пользователя.В качестве альтернативы вы можете создать представление с именем search.gsp в каталоге user / , и затем это представление будет использоваться для того, что возвращается пользователю.