2014-12-12 2 views
2

В моем сервлета:Как вы можете получить доступ к массиву или списку, сохраненным в области запроса, используя javascript?

String[] array = {"apple", "ball", "cat"}; 
req.setAttribute("myArray", array); 

В JavaScript:

var x = '${myArray}'; 
alert(x.length);    //prints 28 
alert('${myArray[0]}');  //prints apple 
alert(x)      //prints [Ljava.lang.String;@267c3c78 

Как я могу получить объект массива без использования JSON, так что я могу петлю через него? Мой единственный вариант json и xml?

+0

- то, что вы ищете? – sol4me

+0

Возможно, попробуйте 'req.setAttribute (« myArray », Arrays.toString (array)),' последний использует значение 'String' вашего массива, но массив Java не переопределяет' toString() 'из' Object '. –

ответ

2

Вы можете использовать <c:forEach>, но поскольку Java работает на стороне сервера, это поможет вам создать простой текст, который может быть использован для вашего JavaScript. Зная это, вы можете создать массив строк JavaScript, как это:

<script type="text/javascript"> 
    var myJavaScriptArray = [ 
     <c:forEach items="${myArray}" var="elem" varStatus="currentStatus"> 
      "${elem}" 
      <c:if test="${not currentStatus.last}"> 
       , 
      </c:if> 
     </c:forEach> 
     ]; 
</script> 

Код выше еще не тестировал.

2

Вы можете присвоить массив переменного яваскрипта как этого

<script> 
var x = [ 
    <c:forEach var="item" items="${myArray}" varStatus="loop"> 
    "${item}" 
    <c:if test="${!loop.last}">,</c:if> 
    </c:forEach> 
] 
<script> 

или если вы хотите, чтобы избежать этого, то со стороны сервера передать правильное представление массива JavaScript. Arrays.toString() поможет.