簡體   English   中英

如何使用request.getParameterValues?

[英]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]);'的行上得到一個空指針異常

  1. 沒有為輸入標簽指定name屬性,如果未指定name屬性,則不會發送任何值。

  2. 在您的情況下,因為players元素僅指定一個,所以request.getParameterrequest.getParameterValues返回相同的值。 當您使用request.getParameter它將返回直接stringrequest.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM