당신이 플러그인 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")
}
}
이는 ErrorsController에 따라 달라
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 페이지가 표시됩니다. 적절한 404 페이지를 표시하려면 grails-app/views/errors/notFound.gsp 파일을 만들어야합니다.
첫 번째 URL 매핑은 재정의 된 작업이 호출되도록합니다. 두 번째는 원래 제어기에 대한 다른 모든 것입니다. 그리고 세 번째는 직접 액세스를 위해 404를 보냅니다.
Burt, 플러그인이''404 "(view : '/ error')'를 정의하면, 내 자신의"404 "맵핑으로 오버라이드 할 수 있습니까? 대신 커스텀 컨트롤러의 액션으로 대체 할 수 있습니까? – raffian