如何使用request.getParameterValues?

时间:2015-08-31 09:21:29

标签: javascript java html jsp

我正在尝试使用隐藏表单将数组从一个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]);'

的行上得到一个空指针异常

3 个答案:

答案 0 :(得分:3)

  1. 未指定name属性为input tag,如果未指定name属性,则不会发送任何值。

  2. 在您的情况下,request.getParameterrequest.getParameterValues会返回相同的值,因为players元素只指定了一个。当您使用request.getParameter时,它会直接返回stringrequest.getParameterValues将返回string[],其长度为1

  3. 如果你想发送多个玩家并且你不想在你的jsp中重复元素,那么将players与一些特殊字符连接如下:

    document.getElementById("players").value=playernames.join("::");
    

    您可以在lineup.jsp中获取字符串,并且可以使用相同的特殊字符将其拆分,如下所示:

    <%
       String players = request.getParameter("players");
       String[] s = players.split("::");
    %>
    

答案 1 :(得分:1)

String [] players = request.getParametervalues(&#34; nameOfTheHiddenField&#34;);

请尝试为隐藏字段指定名称,它将起作用。

答案 2 :(得分:0)

好的,这里的s为空,因此s[0]抛出NullPointerException

如果有可能为任何输入参数获取多个值,方法getParameterValues()通常会出现, 此方法将检索所有值并将其作为字符串数组返回。

但在你的情况下,我认为你只有一个要获取的值,使用request.getAttribute并尝试打印结果,即s而不是s [0]

一旦s不为空,你可以去s [0]