【问题标题】:How can I reset the ADF session timeout with an ajax request?如何使用 ajax 请求重置 ADF 会话超时?
【发布时间】:2015-03-05 17:51:12
【问题描述】:

我有一个有 10 分钟会话超时的 Oracle ADF 应用程序。在 8 分钟标记处显示一个弹出窗口,要求用户单击“确定”继续。对于这种情况,我想通过 javascript/ajax 触发相同的功能。我使用了 fiddler 并检查了发出的 http 请求。它将 Adf-Rich-Message 标头设置为 true,并在 Date.now() 中添加带有当前时间的 _afTS 查询字符串。无论我似乎做什么,除了单击弹出窗口上的“确定”之外,我都无法重置会话过期时间。我对 ADF 知之甚少,但我非常精通 javascript/jQuery。我还将 contentType 设置为 application/x-www-form-urlencoded。我在网上看到一个字段被渲染到具有会话到期时间的页面上。我找不到那个。我的下一个尝试是单步执行当用户在警告弹出窗口上单击“确定”时调用的 ADF javascript,并尝试模仿该行为。有谁碰巧知道该怎么做?也许这是错误的方法?我知道会话超时是在 web.xml 中设置的,这可以在运行时而不是部署时设置吗?如果存在 cookie 或其他内容,请更改值,否则默认为 10 分钟。在这一点上,我被困住并愿意接受建议。

【问题讨论】:

    标签: ajax session jakarta-ee oracle11g oracle-adf


    【解决方案1】:

    您尝试做的事情有点不合常规,但我欢迎经验丰富的开发人员将任何想法带入 ADF 知识库。 因此,您可以通过向 Authentication Servlet 发出 Ajax 请求来使 HTTP 会话无效:/adfAuthentication?logout=true

    【讨论】:

    • 我最终放置了一个隐藏的 commandButton 并调用了一个什么都不做的 bean 方法。我通过javascript单击按钮,它似乎工作正常。感谢您的回复。
    【解决方案2】:

    您可以使用af:poll 组件进行空闲表单轮询,并在其背后使用一些服务器端逻辑来实现自定义会话超时逻辑。

    您不应该与框架抗争,而是要学习如何使用它。

    【讨论】:

      猜你喜欢
      • 2012-03-11
      • 2013-11-05
      • 2020-12-15
      • 2011-04-17
      • 2013-06-10
      • 2010-11-03
      • 2015-11-24
      • 2016-06-18
      • 1970-01-01
      相关资源
      最近更新 更多