提交表单后更改URL,但在Grails中呈现视图时

时间:2012-01-08 21:04:33

标签: url search grails mapping render

您好Grails社区,无论您身在何处!我面临一个很酷的问题......甚至是想法。我需要一些帮助。

我尝试做的是:

  1. 使用短语提交搜索表单。让我们说'裤子'。
  2. 将值提交到/ search / list(searchController =>列表方法)
  3. 调用finder返回不同商店(a,b,c)和不同类别(aaa,bbb,ccc)的裤子列表。
  4. 默认情况下,/ search / list是我可以显示列表的呈现URL,而不是......
  5. myapp.com/search/list?search=pants

    我想在浏览器中显示这样的网址

    myapp.com/a-b-c/aaa-bbb-ccc?search=pants

    不使用urlMapping重定向,从而再次调用list方法。

    当然,没有提交我的搜索表单的相同类型的URL会给出相同的裤子列表,只有我在开始时会有更多的标准(商店= [a,b,c],类别= [aaa,bbb,ccc] ]和搜索短语“裤子”)。

    我希望听起来很清楚。开箱即用的想法赞赏。

    PS。也许你知道Ruby,Java或PHP的一些解决方案来处理这种情况吗?

1 个答案:

答案 0 :(得分:0)

好吧,你可以使用urlmappings。

"/$shops/$categories/$search" {
 controller = "search"
 action = "list"
 constraints {
      shops(matches:/\w-\w-\w/)
      categories(matches:/\w+-\w+-\w+/)
 }
}

如果我的正则表达式匹配正确,那么这个 将匹配myapp.com/a-b-c/aaa-bbb-ccc?search=pants和 将匹配myapp.com/a-b-c/aaa-bbb-ccc/pants

我认为你也可以在urlmappings中添加一些预处理,例如你可以做

"/$shops/$categories/$search" {
  ...
  shops = shops.split('-')
  categories = categories.split('-') 
  ...
}

然而,我不是100%肯定的。