Dan S.
Dan S.

Reputation: 177

How to pass an array created in javascript to another jsp and then use that array in a java function on that jsp?

Here is a script i have and I want to be able to pass the array "playernames" into a java function on another .jsp. I'm wonder how to pass that array to another page and then retrieve it for my java function.

<script>
function getPlayerNames() {
      var selected = document.querySelectorAll("#selected-players > tr > td");
      var playernames = [];
      for(var i=0; i<selected.length; ++i){
         var id = selected[i].getAttribute('id');
         if (id.indexOf('Player')>-1) {
             playernames.push(selected[i].textContent);
         }

      }  
}
</script>

Edit:

<td style="vertical-align: top;"><button   onclick="getPlayerNames()"id="generate">Generate</button><br></td>

<input type="hidden" id="players" />

<script>
function getPlayerNames(){
      var selected = document.querySelectorAll("#selected-players > tr >    td");
      var playernames = [];
      for(var i=0; i<selected.length; ++i){
         var id = selected[i].getAttribute('id');
         if (id.indexOf('Player')>-1) {
             playernames.push(selected[i].textContent);
         }

      }
      document.getElementById("players").values=playernames;
      document.getElementById("players").submit();
      window.location.replace("lineups.jsp");   
}</script>

Other jsp

<%String[] players = request.getParameterValues("players");%>

Upvotes: 2

Views: 4643

Answers (2)

Vibhesh Kaul
Vibhesh Kaul

Reputation: 2613

You'll need to have the hidden field inside the form tags with the id and action attributes set as below.

<td style="vertical-align: top;"><button   onclick="getPlayerNames()"id="generate">Generate</button><br></td>

<form id="playerNames" action="Url"> // In action give the Url of the jsp page you want to send the values to lineups.jsp in your case I guess.
<input type="hidden" id="players" name="players" />
</form>

<script>
function getPlayerNames(){
      var selected = document.querySelectorAll("#selected-players > tr >    td");
      var playernames = [];
      for(var i=0; i<selected.length; ++i){
         var id = selected[i].getAttribute('id');
         if (id.indexOf('Player')>-1) {
             playernames.push(selected[i].textContent);
         }

      }

         document.getElementById("players").value=playernames;
      document.getElementById("playerNames").submit();
}</script>

Upvotes: 1

Amit Bhati
Amit Bhati

Reputation: 5649

1) Stringify the array and then assign to hidden field.
Refer: Javascript Hidden Input Array
2) Submit the hidden field in a form to server.

<input type="hidden" id="hiddenArrayField"/>
document.getElementById("hiddenArrayField").value=yourStringifyArrayValue;

3) On server you would get this as a part of request i.e. on next jsp you can retrieve this value as a request parameter.

  <%= request.getParameter("hiddenArrayField")%>

Upvotes: 0

Related Questions