0

假设我有一个像这样的简单搜索页面:

<form:form id="productsForm" method="post" modelAttribute="productsFormBean">
      <form:label path="name">Name : </form:label>
      <form:input path="name" />
      <button id="filterSubmit" type="submit">Submit</button>
</form:form>

用户可以输入名称并提交页面,但他也可以在不输入任何内容的情况下提交页面。

是否可以获得这样的 RESTful url:

  • 用户输入名称“xyz”并提交页面:www.mywebpage.com/products/name/xyz/
  • 用户提交的页面没有名称:www.mywebpage.com/products/

这是我的控制器:

    @RequestMapping(params = "search=true", value = "/**", method = RequestMethod.POST)
    public String searchHandler(@Valid final ProductsFormBean productsFormBean, final Model model) {
        // (...)
        return "productsSearch";
    }

如果我更改表单的“action”属性,则 url 会更改。通过更改 onSubmit 事件的操作,我已经使用 javascript 实现了这一点。但这不是一个干净的解决方案。是否可以直接在控制器中实现?

4

2 回答 2

0

没门。控制器是纯服务器端的东西。它不控制浏览器中的任何内容。当带有给定 URL 的请求进入时调用它。但它不会改变浏览器如何处理发送到控制器的请求。

于 2012-03-04T19:28:01.703 回答
0
@RequestMapping(value="/", method=RequestMethod.POST)
public String findProduct(@RequestParam String search)
{
  if(search.isEmpty())
  {
    return "redirect:/"
  }
  else
  {
    return "redirect:/"+search;
  }
}

这应该可以帮助您入门,您仍然需要实现一种方法来处理搜索参数的 REST url。

另外,不知道它是否 100% 准确,但应该非常接近。

于 2012-03-06T22:37:25.760 回答