【问题标题】:JSP pop up showing previous / old values显示先前/旧值的 JSP 弹出窗口
【发布时间】:2026-02-07 21:45:02
【问题描述】:

我的要求是我在 JSP 页面上有一个数据表,其中一列是学生,值链接在那里。如果用户单击链接,则应打开弹出窗口并提供学生详细信息。

在弹出窗口中,我需要保持与其他页面(css 等)相同的外观和感觉,因此这意味着我无法打开正常的默认窗口弹出窗口。

当我使用 jQuery 的加载函数加载 jsp 时。 Jsp 只调用一次,所以当我下次尝试获取动态内容时,之前的值会显示在弹出窗口中

$jScript("#DetailPopUpContainer").load('../admin/DetailPopUp', function() {
    $jScript(this).dialog({ 
        autoOpen: true,
        //height:540,
        width:680,
        //loadUrl: 'http://xyz/admin/popup',
        position: [250, 150],
        modal: true,
        cache: false 
    });

请帮忙。

【问题讨论】:

  • 您应该将随机数作为参数传递给 URL 以使其唯一。只要系统找到相同的 URL,它就会返回缓存值,而不是从数据库获取。
  • 你能举个例子吗
  • 看看我的回答!
  • @hermanth 为什么不正确配置您的 Web 服务器以不允许缓存此页面。随机数可能会“随机”重复,因此这是一个不好的解决方法。另请参阅此答案:*.com/questions/27421485/…
  • 它的浏览行为与服务器配置无关。而不是更改浏览器设置(在客户端机器上也是不可能的!),这可能是传递随机值的更好方法。它可能不会“随机”重复,因为它与会话相关联。

标签: java jquery jsp jakarta-ee


【解决方案1】:

尝试在 URL 中添加一个参数,该参数每次都会传递随机数以使其唯一,如下所示。为了适应jquery语法,你可能需要调整代码(ran=Math.random())

$jScript("#DetailPopUpContainer").load('../admin/DetailPopUp?rand='+Math.random(), function() {
                 $jScript(this).dialog({ 
                       autoOpen: true,
                       //height:540,
                       width:680,
                       //loadUrl: 'http://xyz/admin/popup',
                       position: [250, 150],
                       modal: true,
                       cache: false 


                 });

【讨论】:

  • 对于 1 到 1000 之间的随机数:var rand = Math.floor((Math.random() * 1000) + 1);。不需要给参数名,只是为了避免缓存:'../admin/DetailPopUp' + '?' + rand
  • 当然,通过简单地将随机值传递给 URL 也是有意义的。为简单起见,为其命名。
  • 随机数是一种黑客攻击,请考虑适当的缓存配置,请参阅我在问题下方的评论。