Spring MVC @PathVariable annotation



我正在为春季注释之一而苦苦挣扎,那就是@PathVariable。我期待着在你们身上找到帮助。

我的目标是让网址看起来像这样"../product/1" 而不是 "../product?productId=1",但我的主要问题是我想在文本框中输入 ID 号,然后用按钮提交。示例:如果我在文本框中键入 1,我希望从我的数据库中接收 id 为 1 的元素的页面。

所有这些都是在我在我的购物车页面中时完成的。

我的代码

JSP 文件

        <form:form class="form-inline my-2 my-lg-0" action="product" method="get">
            <input class="form-control mr-sm-2" type="text"  placeholder="Search" name="productId"/>
            <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
        </form:form>

控制器

@Controller
@RequestMapping("/")
public class OrderController {
    @Autowired
    ProductService productService;
    @RequestMapping("/cart")
    public String showCart() {
    return "cart";
    }
    @RequestMapping(value = "/product/{productId}", method = RequestMethod.GET)
    public String getProductById(@PathVariable(value = "productId") int productId, Model model) {
        model.addAttribute("product", productService.findProductById(productId));
        return "product";
    }
}

>您可以将按钮类型更改为button,并编写一个JavaScript函数作为submitForm

<form:form class="form-inline my-2 my-lg-0" action="product" method="get">
                <input class="form-control mr-sm-2" type="text"  placeholder="Search" name="productId" id="productId"/>
                <button class="btn btn-outline-success my-2 my-sm-0" type="button" onclick="javascript:submitForm()">Search</button>
            </form:form>

在 AJAX 请求中发送产品 ID,如下所示

function submitForm(){
   var prodId = document.getElementById("productId").value;   
   $.ajax({
       url : '/product/'+prodId;
       ... 
  })
}

最新更新