为什么@Request Mapping不起作用?

时间:2018-06-06 18:09:06

标签: java spring

我的请求网址,我从中访问控制器

<li><a href="brands.htm/nokia">Nokia </a></li>
<li><a href="brands.htm/apple">Apple </a></li>


控制器
---------------

@Controller
@RequestMapping(value= "/brands.htm")
public class ShowBrandsProducts {
    @Autowired
    private ECommerceService service;

    @RequestMapping(method=RequestMethod.GET)
    public String getPage() {
        return "shop_brand";
    }


    @RequestMapping("{id}")
    public String getNokia(@PathVariable("id") String brandName, Model model) {
        List<DisplayFeatureProducts> displayList= null;
        List<FeaturedItemsObject> listFeature= new ArrayList<>();
        ByteToImage big= null;

        try {
            //getting all nokia products
            displayList= service.getProductFromBrand(brandName);
        .....

        ......


        model.addAttribute("brand", listFeature);
        return "shop_brand";
    }


在请求时显示请求资源不可用
由于 /brands.htm 被声明为另一个控制器加载默认产品页面,其中将显示许多品牌。
因此,当用户点击特定品牌时,应该浏览 brands / nokia 并加载数据

2 个答案:

答案 0 :(得分:1)

由于我无法评论,我会写一个答案。您是否尝试将@RequestMapping(value =“/ brands.htm”)更改为@RequestMapping(value =“/ brands.htm /”),添加最后一个斜杠可能有效。

此外,是否认为brands.htm和brands.htm / nokia都应返回同一页面(shop_brand)?

答案 1 :(得分:-1)

实现所需功能的一种方法是将品牌作为URL参数传递。例如:

<li><a href="brands.htm?brand=nokia">Nokia </a></li>
<li><a href="brands.htm?brand=apple">Apple </a></li>

然后在处理 /brands.htm 的控制器/方法中使用该参数的值,以便返回适用的页面内容。