2012-01-05 3 views
0

나는 봄에 최대 절전 모드가있는 응용 프로그램을 가지고 있으며이 데이터로 JSP 페이지를 업데이트하려고합니다. 나는이봄에 애플리케이션 범위 데이터를 업데이트 하시겠습니까?

Value is :: ${applicationScope.value} 

와 JSP이를 사용하려면이 클래스

public class PutDataInApplication implements ServletContextAware{ 
      int i = 0; 
      javax.servlet.ServletContext servletContext; 
      @Scheduled(fixedDelay=2) 
      public void shout(){ 
       setServletContext(servletContext); 
      } 

      @Override 
      public void setServletContext(ServletContext servletContext) { 
       // TODO Auto-generated method stub 
       servletContext.setAttribute("value", i++); 
      } 

} 

으로 적용 범위를 매번 갱신하고 있지만 그것은 단지 Value is :: 0 내가 새로운 데이터마다 시간을 표시 할 보여주는. 이렇게하는 방법, 값은 serServletContext() 메서드를 증가시키는 것입니다. 사실 나는 i 대신에 하나의 방법을 호출해야하지만, i도 업데이트 할 때마다 그 일을 할 수 있습니다. ** 서버 푸시 방식의 모든 사용 **

답변

0

본인의 시나리오를 완전히 따르지 않았습니까? 그러나 호출

servletContext.setAttribute("value", i++);

0 "값"다음 i를 증가라는 이름의 속성에 대한 설정 만 것입니다.

편집 여기

코드 조각에서 무슨 일이 일어나고있는 것입니다 시작합니다.

  1. i=0
  2. shout()이 소리는
  3. i
  4. i의 값으로, "값"라는 속성이 증가됩니다 설정 즉 호출되는 setServletContext(..)
  5. 오버라이드 (override) setServletContext(..)를 호출
  6. 호출되는 설정; i = 1

또한 봄과 관련이없는 동작은 까다로운 방식으로 후위 교환 연산자 (변수 ++)를 사용하는 것입니다.

최종 편집

당신이

servletContext.setAttribute("value", ++i);

이 접미사/접두사에 최대 읽기 시도 당신이 접두사 연산자 (++ 변수)를 사용해야합니다 servletContext.setAttribute 전화 동안 i이 증가보고 싶다면 연산자 및 check this example program.

전역을 설정할 때마다 항상 0으로 초기화되는 i입니다. 목표가 "value"속성의 정수 값을 가져 와서 증분하는 것처럼 보이는 것입니다.

+0

shout() 메서드에서 i 값을 인쇄하는 경우 업데이트 된 인쇄 중 ... –

+0

@RameshK, 후위 연산자의 기초가 누락 된 것 같습니다. 외침에 'i'를 인쇄하면 setSevletContext 내에서 이미 증가합니다. –