2011-08-25 2 views
2
<% 
    //Retrieving the Server list from dispatcher 
    Collection<Server> svr = (Collection<Server>)request.getAttribute("stuff"); 

    ArrayList<String> serverIds = new ArrayList<String>(); 

    for(Server i : svr) 
     serverIds.add(i.getId()); 

    String [] svrIds = new String[svr.size()]; 
    serverIds.toArray(svrIds); 

%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<script type="text/javascript"> 

    var instanceIds = new Array(<%=svrIds%>); 

    //test somethings in there 
    alert(instanceIds[0]); 


</script> 
</head> 
</html> 
+0

중복 가능성 (http://stackoverflow.com/questions/17440164/converting-a-java-arraylist-of-strings-to-a- javascript-array) –

답변

2

당신이 자바 스크립트 데이터 구조, 그것이 할 수있는 아마 가장 간단한 방법에 대한 코드를 작성하는 자바 코드를 사용하려면 Java 용 JSON 라이브러리 사용 JSON 문자열은 Javascript 코드로 해석 될 수 있습니다.

코드에서

http://code.google.com/p/json-simple/wiki/EncodingExamples

, 당신은 같은 것을 할 수 있어야한다 : 당신이 JSON.simple를 사용하려면

, 다음 예제는 여기에 JSON 문자열을 생성하는 방법이 있습니다

var instanceIds = <%= JSONValue.toJSONString(serverIds) %> 

ArrayList를 Java 배열로 변환하지 않아도됩니다. 이 함수는 어떤 유형으로 전달되는지에 민감합니다. 배열은 실제로이 인스턴스에서 작동하지 않습니다.

또한 JSON.simple JAR 파일을 설치하고 org.json.simple.JSONValue을 JSP에 가져와야합니다.

+0

위 코드에 대한 간단한 예제를 작성할 수 있습니까? 대단히 감사합니다 – stackoverflow

+0

추가되었습니다. 분명히 가지고있는 것처럼 JSP 설정에서 이것을 테스트 할 수 없었지만'ArrayList '에서 함수를 테스트하고 예상대로 JSON 배열을 생성했습니다. –

0

String srvIdsString = "\"element1\",\"element2\"";과 같은 JavaScript 호환 문자열 표현 svrIds을 사용해야한다고 말하고 싶습니다. 이를 얻으려면 배열을 반복하고 "\"" + svrIds[i] + "\","을 문자열 표현에 추가하십시오.

마지막 쉼표는 다시 제거하거나 전혀 추가하지 말아야합니다 (예 : 마지막 요소를 건너 뛰거나 앞면에 추가하고 첫 번째 요소를 건너 뛰기).

예 :

StringBuilder idArrayBuilder = new StringBuilder(); 
for(String id : srvIds) { 
    if(idArrayBuilder.length() > 0) { 
    idArrayBuilder.append(","); 
    } 

    idArrayBuilder.append("\"").append(id).append("\""); 
} 
String result = idArrayBuilder.toString(); 

나머지는 :)에게 달려

+0

이 작업의 수행 방법에 대한 예가 있습니까? – stackoverflow

0

Thomas와 Nates의 답변이 모두 좋습니다. 그러나 대안은 숨겨진 필드에 각각을 작성한 다음 j에서 DOM을 찾으십시오. [자바 스크립트 배열에 문자열 자바의 ArrayList 변환]의

1
<% 
    String[] jArray= new String[2]; 
    jArray[0]="a"; 
    jArray[1]="b"; 

    StringBuilder sb = new StringBuilder(); 
    for(int i=0;i<jArray.length;i++) 
     sb.append(jArray[i]+","); 
%> 

<script type="text/javascript"> 
    temp="<%=sb.toString()%>"; 
    var strr = new Array(); 
    strr = temp.split(',','<%=jArray.length%>'); 

    alert("array: "+strr); 
</script> 
관련 문제