2009-09-21 7 views
1

JSP 태그에 문제가 있습니다 - Java 코드에서 속성 값에 어떻게 삽입 할 수 있습니까? 이 내 코드입니다 : - : (JSP 태그 문제 - Java 코드 값으로

<strong>From: </strong> <em><post:ShowPm postId="<%=ii%>" /></em><br> 

나는 자신의 태그 스트럿츠 1과 JSP를 사용하고있다

<%! 
    String ii = new String(); 
%> 

    <% 

    try { 
     String id = request.getParameter("a"); 
     int i = Integer.valueOf(id); 
     ii = String.valueOf(i); 
    } catch (Exception e) { 
     response.sendError(500); 
    } 

    %> 
      <div style="float:right;margin-right:20px;"> 
       <strong>From: </strong> <em><post:ShowPm postId="<%=ii%>" /></em><br> 
      </div> 

나는 그것을 실행하는 경우 발생하는 오류 500 라인 (48)에 stack 이 코드입니다 내 태그). 그냥 일반적으로이 JSP에 대한 몇 가지 피드백을 제공 할 것

<attribute> 
     ... 
     <rtexprvalue>true</rtexprvalue> 
     ... 
    </attribute> 

답변

6

는 소리.

변수 "ii"는 스레드 세이프가 아닙니다. ii는 클래스 변수입니다. 하나의 서블릿 인스턴스 만 생성되고 여러 개의 스레드가이를 실행합니다. 따라서 여러 스레드가이 값을 편집하고 일관성없는 결과를 인쇄 할 가능성이 있습니다.

해결책 : < % 대신 < % scriptlet %> 태그의 서비스 메서드에 대한 로컬 변수로 선언하십시오! 선언 %>

이 코드의 요점은 무엇일까요? 매개 변수를 숫자로 변환 한 다음 다시 표시 하시겠습니까? 검증을위한 시도인가? 나에게 그것은 불필요한 혼동을 불러 일으키는 것처럼 보인다. 특히 문자열로 다시 되돌립니다. 정수가 필요한 경우 태그가 정수를 사용하지 않는 이유는 무엇입니까? 또는 자체에 대한 유효성 검사를 수행 하시겠습니까?

+1

아, 더 빠르다 : D – n00b

+0

니스, thaks 많이! – wokena

1

: 그 속성이 표현을 받아 들일 수 있도록 당신이 당신의 최상위 수준 도메인을 변경해야처럼