在春季更新应用程序范围的数据?

发布于 2024-12-25 12:20:51 字数 852 浏览 0 评论 0原文

我有一个带有 spring 和 hibernate 的应用程序,我想用此数据更新 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 我想每次都显示新数据。如何做到这一点,i 值是递增 serServletContext() 方法。 实际上,我必须调用一种方法来代替 i,但如果我每次都显示更新的 i,我也可以这样做。 ** 与服务器推送方法的任何使用 **

I have an application with spring with hibernate, and I want to update the Jsp page with this data.
I am updating application scope every time with this class

    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++);
            }

}

I want to use this in jsp with this

Value is :: ${applicationScope.value}

but it showing only Value is :: 0
I want to show new data every time. How to do this,i value is incrementing serServletContext() method.
In real I have to call one method in the place of i, but if i show updated i every time i can do that also.
** any use with server - push method **

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月牙弯弯 2025-01-01 12:20:51

可能是我没有完全遵循你的场景。
但是调用

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

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

开始编辑

这是代码片段中发生的情况。

  1. set i=0
  2. shout() 被调用
  3. 喊叫调用 setServletContext(..)
  4. 覆盖 setServletContext(..)被调用,
  5. 它设置名为“value”的属性,i 的值
  6. i 会递增,即; i=1

另外,您看到的行为与 spring 无关,只是您以一种棘手的方式使用后缀运算符(variable++)。

结束编辑

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

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

阅读后缀/前缀运算符和 检查此示例程序。

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

May be I did not follow your scenario completely.
But calling

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

would just set 0 for attribute named "value" and then increment i.

Begin edit

Here is what is happening in your code fragment.

  1. set i=0
  2. shout() gets called
  3. shout calls setServletContext(..)
  4. overridden setServletContext(..) gets called
  5. it sets attribute named "value", with value of i
  6. i gets incremented i.e; i=1

Also the behavior you see is not related to spring, it is just that you are using postfix operator ( variable++) in a tricky way.

End edit

If you want to see i incremented while you call servletContext.setAttribute you must use prefix operator ( ++variable)

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

Read up on postfix/prefix operators and check this example program.

Plus each time you are setting the global i which is always initialized to 0. Looks like your goal is rather to get integer value of "value" attribute and then increment it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文