在春季更新应用程序范围的数据?
Posted
技术标签:
【中文标题】在春季更新应用程序范围的数据?【英文标题】:updating application scoped data in spring? 【发布时间】:2012-01-05 19:04:30 【问题描述】:我有一个带有 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】:可能是我没有完全按照你的方案。 但是调用
servletContext.setAttribute("value", i++);
只会为名为“value”的属性设置 0,然后递增 i
。
开始编辑
这是您的代码片段中发生的情况。
-
设置
i=0
shout()
被调用
喊叫setServletContext(..)
被覆盖的setServletContext(..)
被调用
它设置名为“value”的属性,值为i
i
递增,即;我=1
您看到的行为也与spring无关,只是您以一种棘手的方式使用后缀运算符(变量++)。
结束编辑
如果您想在调用 servletContext.setAttribute
时看到 i
递增,则必须使用前缀运算符 (++variable)
试试
servletContext.setAttribute("value", ++i);
阅读后缀/前缀运算符和check this example program.
加上每次设置全局 i
时,它总是初始化为 0。看起来你的目标是获取“value”属性的整数值,然后增加它。
【讨论】:
如果我在方法 say() 中打印 i 值,它只会打印更新后的 i.... @RameshK,您似乎缺少后缀运算符的基础知识。当您在喊叫中打印“i”时,它已经在 setSevletContext 内递增以上是关于在春季更新应用程序范围的数据?的主要内容,如果未能解决你的问题,请参考以下文章