2012-06-28 2 views
0

Есть страница JSP, в которой у меня есть переменная ArrayList. Мне нужны эти значения arraylist (txt1 и txt2) в теге скрипта. Я пробовал много комбинаций и googling, но didnot успеха.получить значение arraylist в javascript на той же странице

Javascript функция

function fun1() 
{ 
    // how to get arraylist values  
} 

JSP-страница:

<body> 
     <% 
      ArrayList<String> al= new ArrayList<String>(); 
      al.add("txt1"); 
      al.add("txt2"); 

      out.println("<input type=text id=" + al.get(0) + ">");out.println("<br>"); 
      out.println("<input type=text id= " + al.get(1) + ">");out.println("<br>"); 
      out.println("<input type=button id=btn1 value=click onClick=fun1(); > "); 
     %> 
</body> 

Спасибо за ответ

ответ

1

Внутри Javascript вы можете использовать Scriplets очень хорошо

Предположим, список 'ArrayList' оказывает [1,2,3,4] в java (JSP)

вы можете получить список массивов этой

function fun1() 
{ 
    var list = '<%= arrayList %>'; 
} 

при печати переменной списка, это будет строка со значением '[1,2,3,4]

Вы может затем разбить это с помощью регулярного выражения или операции с простой строкой

<body> 
     <% 
      ArrayList<String> al= new ArrayList<String>(); 
      al.add("txt1"); 
      al.add("txt2"); 

      out.println("<input type=text id=" + al.get(0) + ">");out.println("<br>"); 
      out.println("<input type=text id= " + al.get(1) + ">");out.println("<br>"); 
      out.println("<input type=button id=btn1 value=click onClick=fun1(); > "); 
     %> 
</body> 

<script> 
// try the script here 
</script> 
+0

Я попробовал список уага = «<%= al %>», но он дает ошибку говоря „Аль не может быть решен“ –

+0

Ваш код JSP должен быть выше JavaScript для возможности для работы. Сначала введите код JSP, а затем код javscript. – madhairsilence

+1

Я обновил ответ .. Проверьте! – madhairsilence

0

Попробуйте что-нибудь в этом роде.

<script> 
var myArray=new Array(); 
myArray[0] = '<%= al.get(0) %>'; 
myArray[1] = '<%= al.get(1) %>'; 
<script> 
+0

дает ошибку, говоря «al не может быть разрешен» –

+0

Попробуйте распечатать данных al, прежде чем использовать этот код, чтобы убедиться, что он имеет значения. –

+0

yaah.al содержит значения «txt1, txt2» –

0

Вы можете создать тег скрипта, который создает массив в js, который содержит все ваши значения. Я не знаком с JSP, но deppending на oyur коде может выглядеть следующим образом:

out.println("<script type='text/javascript'>"); 
out.println("var myJsArray = new Array();"); 
foreach(var arrayMember in al) 
{ 
    out.println("myJsArray.push(" + arrayMember + ");"); 
} 
out.println("</script>"); 

В Js просто использовать массив:

function fun1() 
{ 
    var firstArrayMember = myJsArray[0]; 
    // or whatever you want to do 
} 

Вы также можете использовать assoziativ массивы, если у вас есть ключ конкретный элемент массива.

Надеется, что вы получили идею

+0

Зачем печатать код для построения массива, когда вы можете просто распечатать литерал массива? – Musa

+0

Поскольку я начал писать этот ответ, не было другого ... Как я уже сказал, я не знаком с JSP, просто хотел дать ему идею. –

0

Я бы иметь код Java где-то еще, но если вы настаиваете на его внутри JSP, попытайтесь иметь читаемый HTML и только выход содержимый Java с помощью <%=...%> - что-то вроде этого:

<% 
    ArrayList<String> list = new ArrayList<String>(); 
    list.add("text1"); 
    list.add("text2"); 
%> 

<body> 

    <form ...> 
    <input type="text" id="<%=list.get(0)%>" /> 
    <input type="text" id="<%=list.get(1)%>" /> 
    <input type="button" id="button1" value="Click" onclick="functionOne();" /> 
    </form> 

    <script type="text/javascript"> 
    function functionOne() { 
     alert(document.getElementById("<%=list.get(0)%>").value); 
    } 
    </script> 
</body> 
Смежные вопросы