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>

ユーザーは名前を入力してページを送信できますが、何も入力せずにページを送信することもできます。

このようなRESTfulURLを取得することは可能ですか?

  • ユーザーは「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;
  }
}

これで始められるはずですが、検索パラメータのRESTURLを処理するためのメソッドを実装する必要があります。

また、100%正確かどうかはわかりませんが、かなり近いはずです。

于 2012-03-06T22:37:25.760 に答える