如何使用request.getParameterValues?
我正在尝试使用隐藏表单将数组从一个jsp页面传递到另一个页面。
这是我的jsp文件的相关代码。
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(); }
警报消息确实显示正确的值被放置在“玩家”中
然后在我的lineup.jsp上我有:
我在’System.out.println(s [0]);’行上得到一个空指针exception
-
name属性未指定为input tag,如果未指定name属性,则不会发送任何值。
-
在您的情况下,
request.getParameter
和request.getParameterValues
返回相同的值,因为players
元素只指定了一个。 当你使用request.getParameter
它将返回直接string
,request.getParameterValues
将返回长度为1
string[]
。
如果你想发送多个玩家并且你不想在你的jsp中重复元素,那么用一些特殊字符连接players
,如下所示:
document.getElementById("players").value=playernames.join("::");
您可以在lineup.jsp
获取is作为字符串,并且可以使用相同的特殊字符将其拆分,如下所示:
<% String players = request.getParameter("players"); String[] s = players.split("::"); %>
String [] players = request.getParametervalues(“nameOfTheHiddenField”);
请尝试为隐藏字段指定名称,它将起作用。
好的,s在这里为空,因此s[0]
抛出NullPointerException
如果有可能为任何输入参数获取多个值,则方法getParameterValues()
通常会进入画面,此方法将检索所有值并将其作为字符串数组返回。
但在你的情况下,我认为你只有一个值来获取,使用request.getAttribute
并尝试打印结果,即s而不是s [0]
一旦s不为null,你可以去s [0]