You are one of the most successful victims of the agreement compared to the configuration .;)
An entry with the format key is added to params , as indicated in the default URL, which represents the type of response that is expected (usually whether xml / json) will also be used for content negotiation, which means, as an example, if you use :
http://localhost:9000/Estrategia/book/index.xml //params -- [action:index, format:xml, controller:book] http://localhost:9000/Estrategia/book/index.json //params -- [action:index, format:json, controller:book] http://localhost:9000/Estrategia/book/index.json?format=excel&extension=xls //params -- [action:index, format:json, extension:xls, controller:book] http://localhost:9000/Estrategia/book/index?format=excel&extension=xls //params -- [action:index, format:null, extension:xls, controller:book]
format populated with the type of content you request. It also means that a query parameter named format will be overridden and lost.
You can rename the request parameter to a value other than format , then it should be available in the controller, for example param.blah , if the request parameter has blah=excel .
OR
change url and remove optional (.$format)? if it is not required:
"/$controller/$action?/$id?(.$format)?"{ constraints { // apply constraints here } }
source share