2012-02-10 3 views
3

저는 몇 년 동안 ASP.NET으로 작업 해 왔으며 현재 JSP, Struts 및 Java를 사용하는 프로젝트에서 작업하고 있습니다.JSP 서블릿과 자바 스크립트의 결합

<% int count=0; %> 
for(i = 0; i < arrayCount; i++){ 
    jsArray[i] = <%= myBeanArrayList.get(count) %>; 
    alert("i = " + i + "count = " + count); 
    <% count++; %> 
} 

카운트 변수가 + 1 %를 계산 = 내가 <% 수를 사용하는 경우에도 증가하지 않는다> :

은 내가 이렇게 보이는 자바 스크립트 함수에 대한 루프가 있습니다. 루프의 내부에서 코드 조각이 왜 작동하지 않는지 이해할 수 없습니다. 누구든지 JSP 빈에 대한 카운트를 증가시킬 수있는 방법에 대한 제안 사항이 있습니까?

+2

이렇게 JS와 코드를 뒤섞는 것은 모든 언어에서 좋은 습관이 아닙니다. – Timeout

답변

0

서버가 아닌 클라이언트에서만 루핑됩니다. 서버 코드는 한 번만 실행됩니다. 따라서 JavaScript 루프를 반복 할 때마다 동일한 값인 myBeanArrayList.get(0)을 사용하고 있습니다. 소스를보고 생성 된 HTML 코드를 살펴보고 문제를 명확히하는 데 도움이 될 것입니다.

편집 : 대신 서버 측 코드를 사용하여 JavaScript 배열 리터럴을 작성하십시오. 나는 JSP를 정말로 알지 못한다. 자바는 녹슨 것이지만,이 자바는 작동하지 않을 것이다.

var jsArray = <%= new JSONArray(myBeanArrayList) %>; 
+0

ahhhhhh ... 내가 작업하고 있던 팝업 창이 마우스 오른쪽 버튼 클릭을 허용하지 않거나 메뉴 막대를 가질 수 없습니다. 일단 내가 메뉴 막대를 활성화하고 뷰 소스를 만들었습니다. 이제 어떻게 될지 ... – iJared

+0

@ 자드 - 예, "소스보기"는이 도구로 시작할 때 유용한 도구입니다. 페이지가 브라우저로 전송되기 전에 _all_ 서버 측 코드가 실행된다는 생각에 익숙해 져야합니다. – nnnnnn

+0

네, 익숙해지기가 힘듭니다 .. 저는 ASP에 너무 익숙합니다.그물 웹 양식 및 코드를 사용하여 배후 ..이 혼합 코드, 자바 스크립트, scriplets 및 HTML 한 페이지에 마음이 boggling입니다 ... – iJared

2

당신이 물건을 혼합하기 때문입니다.

  1. 루프는 javascript에 있으며
  2. 당신 증가 수를 한 번 (이것은 자바가의 beacuse)는 루프를 사용하여 변경하는 경우 변수 count 그래서 단지 <% count++ %>

에 존재하지 않습니다 내부 자바, 카운트 잘 작동 할 수 있습니다. 예를 들어 :

<% for(int i = 0; i < ???; i++) { %> 
alert('<%= i %>'); 
<% } %> 

는 그러나 더 나은 JSP에서 자바 스크립트를 분리합니다. 이것은 고통을 줄 수 있습니다.

+1

JSP에서 어떤 쓰레기, 끔찍한 일 이니? 아무도 다시 사용해서는 안됩니다. – duffymo

+0

예. 그러나 Jared가 코드가 작동하지 않는 이유를 이해하는 것은 단지 예일뿐입니다. –

+0

JSTL을 배우려면 명시 적으로 권장하는 것이 좋습니다. – duffymo

1

내가 가지 b1naryj에 동의하지만, 당신이는 JSP에서 반복하고 시도하고 그냥 자바 스크립트 같은 것을 배열 할당을 작성할 수

<% 
for(i = 0; i < arrayCount; i++){ 
    %>jsArray[<%i%>] = <%= myBeanArrayList.get(i) %>; 
<%}%> 

그것은 그래도 못생긴입니다 ...

1

JSP에서 아무도 스크립틀릿 코드를 사용하면 안됩니다. 추악하고, 부서지기 쉽고, 유지하기 힘든 것으로 판명 된 90 년대 후반의 관용구입니다. 모델 -2 MVC가 필드를 스윕했습니다.

서버 측에서 작업을 수행하는 데 집중해야합니다. JSP를 작성해야한다면 JSTL을 사용하십시오.

현재 가장 좋은 방법은 HTML, CSS 및 JavaScript를 사용하는 것입니다. HTTP GET/POST 또는 AJAX 호출을 사용하여 서버 측의 서비스에서 데이터를 가져옵니다.

+0

나는 불행히도 나는 동의한다. 독창적 인 프로그래밍을 쓰고 현재 극빈층에 속해있는 사람이 아니므로 코드를 구현하는 방법에 영향을 미치기까지 약간의 시간이 걸릴 것입니다 ... 플러스 나는 어떤 기술 우리는 활용할 수 있습니다. – iJared