我已经堆叠了很少的问题,但没有得到我的解决方案。
我有不同的品牌列表,我想映射到一个控制器,以便我可以检索各个品牌的所有产品并在jsp中显示它们。
JSP
--------
div id="sportswear" class="panel-collapse collapse">
<div class="panel-body">
<ul>
<li><a href="brands.htm/nokia">Nokia </a></li>
<li><a href="brands.htm/apple">Apple </a></li>
<li><a href="brands.htm/xaomi">Xaomi </a></li>
<li><a href="brands.htm/motorola">Motorola</a></li>
<li><a href="brands.htm/samsung">Samsung </a></li>
</ul>
</div>
控制器
---------------
@Controller
@RequestMapping(value= {"/brands.htm"})
public class ShowBrandsProducts {
@Autowired
private ECommerceService service;
public String getPage() {
return "shop";
}
@RequestMapping(name="/nokia")
public String getNokia(Model model) {
List<DisplayFeatureProducts> displayList= null;
List<FeaturedItemsObject> listFeature= new ArrayList<>();
ByteToImage big= null;
try {
//getting all nokia products
displayList= service.getProductFromBrand("nokia");
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(Exception ee) {
ee.printStackTrace();
}
displayList.forEach(dl->{
//getting the products from displayList
FeaturedItemsObject fio= new FeaturedItemsObject();
fio.setId(dl.getId());
fio.setName(dl.getName());
fio.setPrice(dl.getPrice());
String encoded= big.convertByteToImage(dl.getImage());
fio.setEncodedImage(encoded);
//adding the products to listFeature to List
listFeature.add(fio);
});
model.addAttribute("brand", listFeature);
return "shop";
}
}
如果我将 @Requestparam(params = {&#34; id = nokia&#34;})
置于此方法之上,我会得到一个解决方案 public String getNokia(Model model)并传递网址,如 / brands?id = nokia ,它的工作正常。
但我想提出的请求不仅仅是id,而是像 /brands.htm/nokia
答案 0 :(得分:0)
您似乎正在寻找@PathVariable
由JB Nizet链接,您可以在Spring的文档中找到它:
这很简单:
@RestController @RequestMapping("/persons") class PersonController { @GetMapping("/{id}") public Person getPerson(@PathVariable Long id) { // ... } }
您希望对自己的品牌做同样的事情。 例如:
@RestController
@RequestMapping("/brands.htm")
class BrandsController {
@GetMapping("/{brand}")
public Model getModelFromBrand(@PathVariable String brand) {
// ...
}
}
您也可以使用枚举而不是字符串来更好地满足您的需求。