繁体   English   中英

Spring-MVC:将两个jsps合并到一个控制器中并发送一个requestMapping

[英]Spring-MVC : two jsps into one controller with one requestMapping

我可以将一个请求映射用于两个jsps吗?

我目前正在从一个控制器调用一个请求映射,但是其中一个jsps似乎没有被控制器捕获。

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

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";
 }

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

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

有人可以帮忙吗?

问题出在您的second.jsp片段的第二行(有错别字?):

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

id属性主要供客户端参考,与提交表单无关(请参见HTML输入-名称与id )。 重要的是name属性。 因此,当POST请求发送到服务器时,请求主体如下所示:

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

由于您将处理程序方法参数注释为@RequestParam("requestQuoteEmailAddress") ,因此Spring MVC会查找requestQuoteEmailAddress而不是requestEmailAddress ,因此会出错(默认情况下,@ @RequestParam是必需的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM