Próbuję wyłączyć domyślną stronę wyszukiwania wtyczki wyszukiwania (http://localhost/searchable/), ale nie znalazłem sposobu, aby to zrobić. Czy ktoś wie, jak można to zrobić, najlepiej w sposób zgodny z prawem, ale w razie potrzeby stosując oszustwo?Wyłączanie grails Domyślna strona wyszukiwania z domyślną wtyczką?
5
A
Odpowiedz
4
Zazwyczaj przekierowuję procedury obsługi kodu błędu do kontrolera, więc mogę wykonać rejestrowanie lub cokolwiek innego przed renderowaniem widoku. Można użyć, że tutaj też:
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')
}
}
gdzie ErrorsController wygląda mniej więcej tak:
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'
}
}
i trzeba stworzyć accessDenied.gsp, notFound.gsp i notAllowed.gsp w grails- app/errors
Wysyłając "ukryty" kontroler do jego niestandardowego mapowania, możesz zalogować się do nieoczekiwanego dostępu, ale nadal renderować stronę 404, aby ukryć jej istnienie.
To dobry pomysł, a następnie mogę sprawić, by wyglądał jak każdy inny błąd nie znalezionego zasobu. Lubię to! Stworzyłem /views/searchable/index.gsp, aby nadpisać plik dołączony do wtyczki, ale po prostu się go pozbędę i zrobię to w ten sposób. Dzięki! –
@Burt - czy jest jakiś sposób, aby po prostu wyłączyć/usunąć UrlMapping przy starcie? To byłoby o wiele bardziej eleganckie rozwiązanie. –
Prawdopodobnie możesz go usunąć, ale wątpię, by to była prosta naprawa. Wygląda na to, że jesteś dobrym kandydatem na żądanie funkcji. Prawdopodobnie można go zaimplementować, gdy wykonamy przestrzenie nazw kontrolerów (wstępnie (v.2.2)). –