(Quick Reference) # 8.4.10 Applying Constraints Version: 3.2.8 ## 8.4.10 Applying Constraints URL Mappings also support Grails' unified validation constraints mechanism, which lets you further "constrain" how a URL is matched. For example, if we revisit the blog sample code from earlier, the mapping currently looks like this:
    static mappings = {
       "/$blog/$year?/$month?/$day?/$id?"(controller:"blog", action:"show")
    }
This allows URLs such as:
    /graemerocher/2007/01/10/my_funky_blog_entry
However, it would also allow:
    /graemerocher/not_a_year/not_a_month/not_a_day/my_funky_blog_entry
This is problematic as it forces you to do some clever parsing in the controller code. Luckily, URL Mappings can be constrained to further validate the URL tokens:
    "/$blog/$year?/$month?/$day?/$id?" {
         controller = "blog"
         action = "show"
         constraints {
              year(matches:/\\\d{4}/)
              month(matches:/\\\d{2}/)
              day(matches:/\\\d{2}/)
         }
    }
In this case the constraints ensure that the `year`, `month` and `day` parameters match a particular valid pattern thus relieving you of that burden later on. | Quick Reference (hide)