2010-07-03 17 views

cevap

4

Genellikle hata kodu işleyicilerini denetleyiciye yeniden yönlendiriyorum, böylece görüntüyü oluşturmadan önce günlüğe kaydetme veya herhangi bir şeyi yapabilirim.

class UrlMappings { 

    static mappings = { 

     "/searchable/$action?"(controller: "errors", action: "urlMapping") 

     "/$controller/$action?/$id?" { } 

     "/"(view:"/index") 

     "403"(controller: "errors", action: "accessDenied") 
     "404"(controller: "errors", action: "notFound") 
     "405"(controller: "errors", action: "notAllowed") 
     "500"(view: '/error') 
    } 
} 

nerede ErrorsController şöyle görünür: Burada da onu kullanabilirsiniz

class ErrorsController { 

    def accessDenied = {} 

    def notFound = { 
     log.debug "could not find $request.forwardURI" 
    } 

    def notAllowed = {} 

    def urlMapping = { 
     log.warn "unexpected call to URL-Mapped $request.forwardURI" 
     render view: 'notFound' 
    } 
} 

ve grails- içinde accessDenied.gsp, notFound.gsp ve notAllowed.gsp oluşturmanız gerekir Uygulama/hata

Özel eşlemesine 'gizli' bir denetleyici göndererek, beklenmedik bir şekilde giriş yapabilir, ancak hala varlığını gizlemek için 404 sayfasını görüntüleyebilirsiniz.

+0

Bu iyi bir fikir, sonra sadece başka bir kaynak bulunamadı hatası gibi görünmesini sağlayabilirsiniz. Bunu sevdim! Eklentiyle birlikte gelenin üzerine yazmak için /views/searchable/index.gsp yarattım, ama bundan kurtulacağım ve bu şekilde yapacağım. Teşekkürler! –

+0

@Burt - Başlangıçta UrlMapping'i devre dışı bırakmak/kaldırmak için bir yol var mı? Bu çok daha şık bir çözüm olurdu. –

+0

Muhtemelen onu kaldırabilirsiniz, ama basit bir düzeltme olacağından şüpheliyim. Bir özellik talebi için iyi bir aday gibi görünüyor. Denetleyici ad alanları yaptığımızda muhtemelen uygulanabilmektedir (geçici olarak v2.2). –

İlgili konular