【问题标题】:Calling Bean method from Jquery从 Jquery 调用 Bean 方法
【发布时间】:2012-09-15 15:24:17
【问题描述】:

是否可以从 Jquery 调用 Bean?我的要求如下,

我有一个基于 JSF 1.2 的 Servlet。

如果用户闲置了一段时间,他的会话就会失效。在会话无效前 1 分钟显示 Jquery 对话框。用户在对话框中有 2 个选项。 “是的,我想继续”将延长会话。 “不,我想注销”将注销用户。

当用户点击“不,我想注销”时,我想调用更新数据库并使会话无效的 bean 方法。

下面是代码,

'No, Log out': function(){
 $j.idleTimeout.options.onTimeout.call($j.post('//This is where am stuck',function()

我想在 $j.post 中调用 bean,以便我可以在我的 bean 中进行一些清理活动。

如何做到这一点?

问候,

【问题讨论】:

  • 如果最终用户对话框显示 1 分钟后点击“是”怎么办?
  • @BalusC:当用户点击“是的,我想继续”时,正在调用一个 JSP 页面 (extend_session.jsp)。这个 JSP 页面里面没有任何内容。因此,当用户点击此 JSP 页面时(在会话失效触发之前),会话将被扩展。这样,用户可以继续浏览。如果用户不点击“是”,1分钟内会话失效,用户将被重定向到登录页面。
  • 您说对话框在会话失效前 1 分钟显示。因此,如果对话框显示的时间超过 1 分钟(例如,因为最终用户外出吃午饭、上厕所或抽烟等),那么会话在服务器中已经失效(至少,您暗示)。
  • @BalusC :我的服务器中设置的会话超时为 15 分钟。对话框将在第 14 分钟显示,它会启动从 59 到 1 的计数器。如果用户没有单击“是”,当计数器值变为 0 时,表示已达到 15 分钟,会话将失效从服务器。我已经编写了被调用的监听器(HttpSessionListener)。在这里,正在处理清理代码(如调用 DB 等),最后再次重定向到登录页面。

标签: java jquery jsf


【解决方案1】:

你可以使用一个 hidden(style="display:none") commandButton 和一个指向你 bean 中方法的动作,然后从 jquery 调用一个 .click()

类似的东西

<h:commandButton id="myButton" action="#{myBean.myInvalidateMethod}" style="display:none"/>

jquery

&("#myButton").click();//possible myForm prefix appear before the id so use #myForm\\:myButton selector

或者你可以从你的jsf页面调用servlet,类似于这个答案Calling a Servlet from a JSP page using jQuery Ajax

【讨论】:

    【解决方案2】:

    您不能直接访问这些方法,您必须让您的 servlet 处理您的请求并为您调用该方法并以 json 格式返回数据,例如

    【讨论】:

      猜你喜欢
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      相关资源
      最近更新 更多