[英]equivalent for request.getParameterValues() in javascript
[英]How to use request.getParameterValues?
我正在尝试使用隐藏表单将数组从一个jsp页面传递到另一个页面。
这是我的jsp文件的相关代码。
<td style="vertical-align: top;"><button onclick="getPlayerNames()"id="generate">Generate</button><br></td>
<form id="playerNames" method="post" action="lineups.jsp">
<input type="hidden" id="players" />
</form>
<script>
function getPlayerNames(){
var selected = document.querySelectorAll("#selected-players > tr > td");
var playernames = [];
for(var i=0; i<selected.length; ++i){
//alert(selected[i].textContent);
var num = (i-1)%6;
if(num==0){
playernames.push(selected[i].textContent);
}
}
document.getElementById("players").values=playernames;
alert(document.getElementById("players").values);
document.getElementById("playerNames").submit();
}</script>
警报消息确实显示正确的值被放置在“玩家”中
然后在我的lineup.jsp中,我有:
<%String[] s = request.getParameterValues("players");
System.out.println(s[0]);%>
我在'System.out.println(s [0]);'的行上得到一个空指针异常
没有为输入标签指定name属性,如果未指定name属性,则不会发送任何值。
在您的情况下,因为players
元素仅指定一个,所以request.getParameter
和request.getParameterValues
返回相同的值。 当您使用request.getParameter
它将返回直接string
, request.getParameterValues
将返回长度为1
string[]
。
如果要发送多个玩家,并且不想在jsp中重复元素,请使用以下特殊字符来连接players
:
document.getElementById("players").value=playernames.join("::");
您可以在lineup.jsp
它作为字符串lineup.jsp
并可以使用相同的特殊字符将其拆分,如下所示:
<%
String players = request.getParameter("players");
String[] s = players.split("::");
%>
String []播放器= request.getParametervalues(“ nameOfTheHiddenField”);
请尝试为隐藏字段指定一个名称,它将起作用。
OK,s在这里为null,因此s[0]
抛出NullPointerException
如果有可能为任何输入参数获取多个值,则通常会使用方法getParameterValues()
,此方法将检索所有值并将其作为字符串数组返回。
但是在您的情况下,我认为您只有一个值要提取,请使用request.getAttribute
并尝试打印结果,即s而不是s [0]
一旦s不为null,就可以使用s [0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.