我希望在单击按钮后将ArrayList发送到另一个页面。
function gotosave(){
<%
request.setAttribute("list", ar);
request.getRequestDispatcher("savecard.jsp").forward(request,response);
%>
}
<button type="submit" name="save" style="float:right;" class="btn btn-info"
onclick="gotosave()">SAVE</button>
“ar”是我的数组列表。
这是我的第一个问题,所以如果我错过了正确的格式,那就不要介意了。
答案 0 :(得分:0)
您正在尝试将Java和JavaScript混合在一起。它不会起作用。 在JSP(或任何类似的后端渲染技术)中,将执行第一个Java代码,然后页面将由您的浏览器呈现,然后才会执行JavaScript代码。
现在发生了什么: 首先执行此代码:
<%
request.setAttribute("list", ar);
request.getRequestDispatcher("savecard.jsp").forward(request,response);
%>
然后生成JavaScript函数,它看起来像这样:
function gotosave(){
}
如果你尚未转发,当你点击按钮时,什么也不会发生。
您的代码的另一个问题是您转发到JSP,而不是转发到您的servlet。特别是如果你想传递一些参数,那不应该是这种情况。
我建议您提出的建议: 删除JS函数,并将所有内容包装在表单中。然后指定此表单的操作,并将其指向您的servlet(或JSP,如果您坚持)
<form method = "POST" action = "./savecard.jsp">
<input type = 'hidden' name = 'list' value = '${ar}' />
<button type="submit" name="save" style="float:right;" class="btn btn-info">SAVE</button>
</form>
答案 1 :(得分:0)
好的,你可以用两种方法达到这个目的。一个人正在使用一个隐藏的领域。这是传统而有效的方式。
<input type="hidden" name="userId" value="<your array list>">
另一种选择是使用会话变量。使用会话存储,只要您不清除会话,就可以在项目中的任何jsp上访问您的arraylist。
将您的属性设置为当前的jsp,如下所示
session.setAttribute("arraylist", <your arraylist variable>);
在您的其他JSP中使用此
int arraylist = session.getAttribute("arraylist");