单击按钮时将ArrayList发送到另一个页面

时间:2017-06-10 19:02:49

标签: javascript jsp button

我希望在单击按钮后将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”是我的数组列表。

这是我的第一个问题,所以如果我错过了正确的格式,那就不要介意了。

2 个答案:

答案 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");