我有一个jsp页面和一个带有填充功能的控制器:
java controller code:
@Controller
public class AddNewItemController {
@RequestMapping(value = "/newItem/submit", method = RequestMethod.POST)
public String getDataForInterval4(@RequestParam("itemId") String itemId, @RequestParam("product1SkusCnt") String product1SkusCnt, @RequestParam("itemName") String itemName, HttpServletRequest request) {
return "ItemSubmitted";
}
}

my main jsp file that submits to controller:
<center>
<table>
<tr>
<td>How many items do you have?</td>
<td> <input type="number" name="productsCnt" id="productsCnt" size="2" min="1" value="1" onchange="productCount()"/> </td>
</tr>
</table>
</center>
<form action="/newItem/submit" method="post">
<br /><br />
<div id="outerDivContainer">
<div id="product1Div" name="product1Div" >
<hr /> Product 1 Name: <input id="product1Name" /> Product 1 ID: <input id="product1ID" /> How many SKUs of Product 1? <input id="product1SkusCnt" type="number" size="2" min="1" value="1" onchange="skusCount(1)"/> <br /><br />
<div id="skusContainer1">
<div id="sku1Div">
SKU 1 Name: <input id="sku1"/>
</div> <br />
</div>
</div>
</div>
<hr />
<input type="submit" value="Submit" />
</form>
<script>
function productCount() {
console.log("onchange product");
document.getElementById('outerDivContainer').innerHTML = "";
var cnt = document.getElementById('productsCnt').value;
console.log("cnt="+cnt);
for (i=0;i<cnt;i++){
var newEl = document.createElement('div');
newEl.class='prodRow';
j=i+1;
newEl.innerHTML = '<div id="product'+j+'Div"><hr /> Product '+j+' Name: <input id="product'+j+'Name" /> Product '+j+' ID: <input id="product'+j+'ID" /> How many SKUs of Product '+j+'? <input id="product'
+j+'SkusCnt" type="number" size="2" min="1" value="1" onchange="skusCount('+
j+')" /> <br /><br /> <div id="skusContainer'+j+'"><div id="sku1Div"> SKU 1 Name: <input id="sku1"/></div> <br /> </div></div>';
document.getElementById('outerDivContainer').appendChild(newEl);
}
}
function skusCount(productId){
console.log("onchange skus, product id= "+productId+";");
var skusCnt = document.getElementById('product'+productId+'SkusCnt').value;
console.log("skusCnt="+skusCnt);
document.getElementById('skusContainer'+productId).innerHTML = "";
for (i=0;i<skusCnt;i++){
var newEl = document.createElement('div');
newEl.class='skuRow';
j=i+1;
newEl.innerHTML = '<div id="sku'+j+'Div">SKU '+j+' Name: <input id="sku'+j+'" /> </div> <br />';
document.getElementById('skusContainer'+productId).appendChild(newEl);
}
}
</script>
&#13;
ItemSubmitted.jsp只是一个确认成功提交项目的jsp文件。 问题是我不知道将多少项传递给控制器,或每个项目可能有多少skus。 这个问题的建议方法是什么?提前谢谢!
答案 0 :(得分:0)
我的问题的答案比我预期的要简单得多。我所要做的只是知道我将传递多少参数及其名称。我不必在控制器中将其指定为@RequestParam("itemId") String itemId, @RequestParam("product1SkusCnt")
等。
相反,我只应该将请求作为参数传递:
@RequestMapping(value = "/newItem/submit", method = RequestMethod.POST)
public String getDataForInterval4(HttpServletRequest request) { return "ItemSubmitted"}
我可以通过执行以下操作来调用控制器中的每个传递参数:
request.getParameter("product"+i+"SkusCnt"))
只需要确保我也通过了产品总数。
希望这有助于某人。