如何将数组从jsp页面中的JavaScript函数传递给控制器​​类?

时间:2018-01-08 07:39:01

标签: javascript java spring-mvc

我已经实现了一个JavaScript按钮操作,将jsp页面中的所有已检查元素推送到一个数组中。所以现在我需要将这个数组传递给控制器​​类。我需要在控制器函数中删除该数组的元素。我怎么能这样做?我需要的只是帕斯 JavaScript函数,jsp表单和控制器类函数如下。



<script type="text/javascript">
function selected(){
	var all_checked = document.querySelectorAll('input[name=checkbox]:checked');
	//document.write(all_checked.length);
	var selectedIds = [];

	for(var x = 0, l = all_checked.length; x < l;  x++)
	{
		selectedIds.push(all_checked[x].value);
	    //document.write(all_checked[x].value);
	}
	
	return selectedIds; 
}

</script>

> selectedIds is containing the checked items in the jsp page.
&#13;
<form:form method="post" action="createnewstory/${userstoryId} }" modelAttribute="selectedIds" modelAttribute="fulluserstory">
<div class="container">
<div class="deletebutton">
<input id="deleteAllButton"  onClick="selected()" class="btn-lg btn-primary pull-right" type="submit" name="actionButton" value="Delete Selected"></input>
</div>
<div class="content">
<c:if test="${!empty storyList}">

		<table class="table">
		<thead>
			<tr>
			<th></th>
				<th>User Story Id</th>
				<th>User Story Name</th>
				<th>Status</th>
			</tr>
			</thead>
			
		<tbody>
			<c:forEach items="${storyList}" var="userstory">
			
				<tr>
				<td class="checkbox"><input name="checkbox" type="checkbox" value="${userstory.userstoryId}" id="####" ></td>
				<td class="uId"><c:out value="${userstory.userstoryId}"/></td>
				<td class="uName">
					 <a href="<c:url value='/viewuserstory/${userstory.userstoryId}'/>"><c:out value="${userstory.userstoryname}"/></a>
				</td>
				<td class="uStatus"><c:out value="${userstory.status}"/></td>	
					
				</tr>
		</c:forEach>		
		</tbody>
		
		</table>
		</c:if>
		</div>
		</div>
</form:form>
&#13;
&#13;
&#13;

&#13;
&#13;
@RequestMapping(value="/createnewstory",method=RequestMethod.POST)
	public String createNewStory(Map<String,Object> map,@ModelAttribute("fulluserstory") Fulluserstory fulluserstory,@RequestParam String actionButton,HttpServletRequest request){
		if (actionButton.equals("Delete Selected")){
			int [] checkedlist={73,74};
			 for(int i=0;i<checkedlist.length;i++){
				 int userstoryId=checkedlist[i];
				 userstoryService.delete(userstoryId);
				 System.out.println(checkedlist[i]);
				 System.out.println("delete#######selected inside for");
			 }
       }
&#13;
&#13;
&#13;

  

我需要在控制器中获取setectedIds数组,作为checkedlist数组。

3 个答案:

答案 0 :(得分:0)

我建议您使用primeface remote command。您可以在here中找到详细信息。

答案 1 :(得分:0)

您可以对数组进行字符串化

JSON.stringify(selectedIds);

在控制器中,将此接受为String参数,根据您的要求将其转换回数组或列表。

谢谢, 拉温德拉

答案 2 :(得分:-1)

这样做的第一种方法是 通过表单操作传递Javascript数组变量以获取Controller上的值。

然后像这样把它拿到控制器上

String selectedIds[] = request.getParameterValues("selectedIds");

make var selectedIds = []; global