gpt4 book ai didi

java - Spring-MVC : two jsps into one controller with one requestMapping

转载 作者:行者123 更新时间:2023-11-28 13:29:38 27 4
gpt4 key购买 nike

我可以为两个jsp使用一个请求映射吗?

我当前正在从一个 Controller 调用一个请求映射,但其中一个 jsps 似乎没有被 Controller 捕获。

两个jsp具有相同的表单操作和相同的表单方法:

first.jsp 看起来像这样:

<form:form method="POST" action="/ShowroomNav/requestQuote" id="requestQuoteForm">

<input type="hidden" value=${product.productCode } name="productCodes" />
<input type="hidden" id="requestQuoteEmailAddress" name="requestQuoteEmailAddress" />
</form:form>

第二个.jsp 如下所示:

        <form:form method="POST" action="/ShowroomNav/requestQuote" id="requestQuoteForm">
<input type="hidden" id="requestQuoteEmailAddress" name="requestEmailAddress" />
<c:forEach var="product" items="${products}">
<input type="hidden" value=${product.productCode } name="productCodes" />

<div class="box">
<img
src="public/productImages/${product.productCode}/${product.productCode}A.jpg"
style="max-width: 100%"
onclick="productProfile('${product.productCode}')" /><br /> <label
class="name">${product.productName}</label>
</div>


</c:forEach>
</form:form>

他们都通过 javascript 调用提交函数:

  $("#requestQuoteSubmitButton").one("click",function(){

$("#requestQuoteEmailAddress").val($("#requestQuoteEmailAddressModal").val());


alert($("#requestQuoteEmailAddress").val());
$("#requestQuoteForm").submit();

});

这就是controller.java的样子:

@RequestMapping(value = "/requestQuote", method = RequestMethod.POST) // or GET 
public String requestQuote(@RequestParam("requestQuoteEmailAddress") String requestQuoteEmailAddress, @RequestParam("productCodes") String[] productCodes) {

System.out.println(">>>> requesting quotes >>>>");

for(int i=0; i<productCodes.length; i++) {
System.out.println(" Product Codes : " + productCodes[i]);
}

System.out.println("requestQuoteEmailAddress : " + requestQuoteEmailAddress );
System.out.println("<<<<< requesting quotes <<<<");

return "productSearch";
}

所以我不知道为什么第二个.jsp 无法被 Controller 捕获,因为当我尝试提交它时它总是显示此错误。

 HTTP Status 400 - The request sent by the client was syntactically incorrect.

有人可以帮忙吗?

最佳答案

问题是(拼写错误?)在第二个.jsp 片段的第二行:

<input type="hidden" id="requestQuoteEmailAddress" name="requestEmailAddress" />

id 属性主要供客户端引用,与表单提交时无关(参见 HTML input - name vs. id )。重要的是 name 属性。因此,当 POST 请求发送到服务器时,请求正文如下所示:

requestEmailAddress=...&productCodes=...&productCodes=...

由于您将处理程序方法参数注释为 @RequestParam("requestQuoteEmailAddress"),Spring MVC 会查找 requestQuoteEmailAddress 而不是 requestEmailAddress,因此错误(@RequestParam 的默认要求为 true)。

关于java - Spring-MVC : two jsps into one controller with one requestMapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095068/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com