我必須根據價格或名稱,升序或降序來訂購產品列表。 後端完成後,我只需發送一個參數,說明從下拉列表中選擇了哪個選項。如何在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;"
和控制器I映射/order/{orderBy}"
鏈接。 這種方法的問題是,一旦我點擊了一個項目,該鏈接將成爲/products/order/option_here
,當我再次點擊,/order/option_here
將再次在鏈路的末端添加,導致/products/order/option_here/order/option_here
我也嘗試過得到的RequestMethod.GET
order
的價值,但沒有工作(我相信是因爲GET
方法後的頁面結構完成)
這我想排序的頁面被稱爲/products
,所以我怎麼能對它進行排序一旦用戶選擇了他的選擇?
這是我的方法@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;
}
映射我們不允許使用jQuery。
爲什麼你不準使用jQuery!最簡單的方法是在客戶端獲取參數orederBy並通過Ajax將其發送到您的控制器,然後獲取產品列表!我發現你在那裏有點複雜。 – PacMan
我不會制定規則......只能遵循它們:\ – SnuKies
您想在哪裏排序?在控制器?! –