====== URL Mappings ======
Here will will talk about how to map an URL to our method in our controller with parameter.
===== UrlMappings.groovy =====
We add ''/myController/myMethod/$var1?/$var2?/$var3?'' in our mapping. This tell Grails when that when the input URL match to this pattern, we should go to ''myController'', and call ''myMethod''. Notice that we have $var1, $var2, and $var3 in the URL, those are the parameter in URL that we pass to the method. The ? after each variable means those parameter are option.
static mappings = {
"/myController/myMethod/$var1?/$var2?/$var3?"{
controller = "myController"
action = "myMethod"
}
"/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
"404"(view:'/notFound')
}
===== the Controller =====
Here we use ''@RequestParameter('var1') String v1'' and so on in the method parameter to obtain the value pass from the URL. Note that ''var1'', ''var2'', and ''var3'' must be the same as what we setup in the UrlMappings.groovy.
package hello
import grails.web.RequestParameter
class MyControllerController {
def myMethod(@RequestParameter('var1') String v1,
@RequestParameter('var2') String v2,
@RequestParameter('var3') String v3) {
String s = request.getRequestURI()
render(s + "
" + v1 + "
" + v2 + "
" + v3)
}
}
===== Result =====
The result for URL ''http://127.0.0.1:8080/myController/myMethod/1a/2b/3c'' would look like:
/myController/myMethod/1a/2b/3c
1a
2b
3c