views:

45

answers:

1

I'm trying to disable the Searchable plugin default search page (http://localhost/searchable/), but haven't found a way to do it. Anyone know how this can be done, preferably in a legit way, but resorting to trickery if necessary?

+1  A: 

I usually re-route error code handlers to a controller so I can do some logging or whatever before rendering the view. You can use that here also:

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')
   }
}

where ErrorsController looks something like this:

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'
   }
}

and you'll need to create accessDenied.gsp, notFound.gsp, and notAllowed.gsp in grails-app/errors

By sending a 'hidden' controller to its custom mapping you can log unexpected access to it, but still render the 404 page to hide its existence.

Burt Beckwith
That's a good idea, then I can make it just look like any other resource not found error. I like it! I had created a /views/searchable/index.gsp to overwrite the one included with the plugin, but I'll just get rid of that and do it this way. Thanks!
Kaleb Brasee