2017-07-18 12 views
1

価格や名前、昇順または降順に基づいて商品のリストを注文する必要があります。 バックエンドが完了しました。どのオプションがドロップダウンリストから選択されたかを示すパラメータを送信するだけです。JSPでアイテムを含むページを注文する方法

<!-- Dropdown for ORDER --> 
<label for="order" class="control-label">Order by</label> 
<select class="form-control" name="order" id="order" onchange="..."> 
    <option value="priceAsc" selected>Price: lowest first</option> 
    <option value="priceDesc">Price: highest first</option> 
    <option value="nameAsc">A - Z</option> 
    <option value="nameDesc">Z - A</option> 
</select> 

onchangeでは、私はonchange="location=location + '/order/'+ this.options[this.selectedIndex].value;"のように異なるものを試してみたし、コントローラに私が/order/{orderBy}"リンクをマッピングされました。 この方法の問題点は、私は1つのアイテムをクリックすると、リンクが/products/order/option_hereになることだった、と私はもう一度クリックしたいとき、私も試してみました/products/order/option_here/order/option_here

/order/option_hereは結果として、リンクの最後に再び追加されますRequestMethod.GETorderの値を取得するが、うまくいきませんでした私は、並べ替えしようとしているページは/productsと呼ばれる

GETメソッドの後にページの構築物が完成しているので、私は信じている)ので、私はそれを並べ替えることができますかユーザーが自分のオプションを選択したら、

これは、我々はjQueryのを使用することはできません@Controller

@RequestMapping(value = "/order/{orderBy}, method = RequestMethod.GET) 
public ModelAndView sortPageBy(@PathVariable String orderBy){ 
    ModelAndView modelAndView = new ModelAndView("viewProducts"); 
    List<Product> sortedProducts = productService.orderProducts(orderBy); 

    modelAndView.addObject("products", sortedProducts); 

    return modelAndView; 
} 

にマッピングされた私の方法です。

+0

でのonSubmit呼び出すための

!!最も簡単なアプローチは、クライアント側でパラメータorederByを取得し、コントローラにAjax経由で送信し、製品のリストを取得することです!私はあなたがそこで複雑なことをしているのを見ている。 – PacMan

+0

私は規則を作っていません...それだけに従ってください:\ – SnuKies

+0

どこでそれを並べ替えるのですか?コントローラーで! –

答えて

0

問題は、常にURLが増加するため、現在のURLに対して常に「評価」することです。 ご注文の場合は、リクエストパラメータとしてマップすることをお勧めします。例

@RequestMapping(value = "/product", method = RequestMethod.GET) 
public ModelAndView sortPageBy(
    @RequestParam("order") String orderBy){ 
     . . . 
} 

、あなたはjQueryのを使用することを許可されていない理由だけでのonchangeイベント

+0

これはうまくいきません。文字列 'order'が見つからないというHTTPステータス400が返されます – SnuKies

+0

ブラウザが実際に注文パラメータを傷つけるかどうか確認できますか? リクエストURLは、http:// _ yourhost_/products?order = priceAsc' – gtosto

+0

のようなものでなければならないので、何をすべきか分かりません。 私はそれを実装する方法を探しています – SnuKies

関連する問題