在春季更新应用程序作用域数据?

时间:2012-01-05 19:04:30

标签: java spring jsp servlets server-push

我有一个带有hibernate的spring的应用程序,我想用这些数据更新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++);
            }

}

我想在jsp中使用这个

Value is :: ${applicationScope.value}

但仅显示Value is :: 0 我想每次都显示新数据。怎么做,我的值是增加serServletContext()方法。 实际上,我必须在i的位置调用一种方法,但如果我每次都能显示更新的i,那么我也可以。 **与服务器一起使用 - 推送方法**

1 个答案:

答案 0 :(得分:0)

可能是我没有完全遵循你的情况。 但是打电话给

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

只会为名为“value”的属性设置0,然后递增i

开始修改

以下是您的代码片段中发生的事情。

  1. 设置i=0
  2. shout()被称为
  3. 喊叫setServletContext(..)
  4. 被覆盖的setServletContext(..)被称为
  5. 设置名为“value”的属性,值为i
  6. i增加,即; I = 1
  7. 此外,您看到的行为与spring无关,只是您正在以棘手的方式使用后缀运算符(变量++)。

    结束修改

    如果您希望在调用i时看到servletContext.setAttribute递增,则必须使用前缀运算符(++变量)

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

    阅读后缀/前缀运算符和check this example program.

    每次设置全局i时总是初始化为0.看起来你的目标是获取“value”属性的整数值然后递增它。