Если у вас есть плагин-контроллер с именем PluginController и действие «foo», которое вы хотите переопределить, вы можете создать подкласс контроллера:
class MyController extends PluginController {
def foo = {
...
}
}
но вам нужно будет поработать в UrlMappings:
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?" {
constraints {}
}
"/myController/foo/$id?"(controller: "myController", action: "foo")
"/myController/$action?/$id?"(controller: "pluginController")
"/pluginController/$action?/$id?"(controller: "errors", action: "urlMapping")
"/"(view:"/index")
"500"(view:'/error')
"404"(controller: "errors", action: "notFound")
}
}
и это зависит от контроллера ошибок:
class ErrorsController {
def notFound = {
log.debug "could not find $request.forwardURI"
}
def urlMapping = {
log.warn "unexpected call to URL-Mapped $request.forwardURI"
render view: 'notFound'
}
}
, который отображает страницу 404, если вы называете старые "не отображенные" действия контроллера. Вам потребуется создать grails-app / views / errors / notFound.gsp, чтобы отобразить соответствующую страницу 404.
Первое отображение URL-адреса гарантирует, что ваше переопределенное действие вызывается. 2-й направляет все остальное на оригинальный контроллер. А третий отправляет 404 для прямого доступа.