ฉันมีคอนโทรลเลอร์ที่ใช้คำอธิบายประกอบสำหรับการแมปคำขอและ requestParam
คอนโทรลเลอร์ทำงานได้ดี อย่างไรก็ตาม เมื่อส่งออบเจ็กต์คำสั่งด้วยอาร์เรย์ สปริงจะส่งเสียงออกมาว่า ดัชนีอาร์เรย์อยู่นอกขอบเขต ฉันเดาว่ามีบางอย่างผิดปกติกับการผูก แต่ไม่รู้วิธีแก้ไข
เพื่อให้เจาะจงมากขึ้น ใน eclipse ฉันจะตั้งค่าดีบักเกอร์ที่จุดเริ่มต้นของคอนโทรลเลอร์ และเมื่อส่งแบบฟอร์ม (โดยการกดปุ่มอินพุตส่ง) eclipse debugger จะไม่ทริกเกอร์ และฉันจะเห็น ดัชนีอาร์เรย์อยู่นอกขอบเขต ข้อผิดพลาด> ที่แข็งแกร่งในคอนโซล
คอนโทรลเลอร์มีลักษณะดังนี้:
@RequestMapping(value = {"/internal/pcsearch.dex", "/external/pcsearch.dex"},
method = {RequestMethod.POST, RequestMethod.GET})
public ModelAndView executeProductCatalogSearch(
HttpServletRequest request,
@RequestParam(value = "cat" ,required = false) String cat,
@RequestParam(value = "brand" ,required = false) String brand,
@ModelAttribute("command") ProductCatalogCommand cmd
){
[แก้ไข] และ jsp เป็นเหมือน:
<form name="pForm"
id="pForm"
action="<c:url value="psearch.dex"><c:param name="cat" value="${cat}"/></c:url>"
method="POST"
style="display:inline;">
...
...
<c:forEach var="model" items="${models}" varStatus="modelLinkStatus">
<script>
var modelImg<c:out value="${modelLinkStatus.index}"/>Src = '<c:out value="${model.altModelImage}"/>';
</script>
<spring:bind path="command.models[${modelLinkStatus.index}].modelSkusDisplayed">
<input type="hidden" name="<c:out value="${status.expression}"/>" id="<c:out value="${status.expression}"/>" value="<c:out value="${status.value}"/>"/>
</spring:bind>
<spring:bind path="command.updateCartButton">
<input type="submit" value="<spring:message code="orderEntryMessages.ecatalog.button.addToCart" text="Add to Cart" htmlEscape="yes" />" name="<c:out value="${status.expression}"/>" id="<c:out value="${status.expression}"/>" class="sub_buttons"/>
</spring:bind>
...
และวัตถุคำสั่งประกาศอาร์เรย์โมเดลเป็น:
private List<ModelLink> models = new ArrayList<ModelLink>();
โดยที่ modelLink เป็น ds ที่กำหนดเอง
แท็ก foreach แรกจัดการออบเจ็กต์คำสั่ง model และส่วนที่ 2 คือปุ่มส่งที่ฉันคลิก