有没有办法将全局侦听器附加到JSF中的所有AJAX调用?也许通过相位监听器之类的东西?
这是一个难题……假设您正在使用f:ajax标记和apache
shiro之类的东西,并且您的会话将过期。然后,您返回并单击附加了f:ajax的按钮。服务器将响应302重定向到登录页面。
用户什么都看不到。他们可以反复单击并调用ajax调用,但对他们来说,该应用程序只是“死”。
所以,尽管如此,是否有办法将侦听器附加到JSF中的所有ajax调用中?如果是这样,我想做的就是监视响应代码。如果是重定向,请使用window.navigate沿其发送。
我总是乐于听到别人如何解决这个问题!
有没有办法将全局侦听器附加到JSF中的所有AJAX调用? 也许通过相位监听器之类的东西?
是的,一个PhaseListener
可以做到。一SystemEventListener
也。一Filter
也。
如果您在JSF上下文中,则可以按以下方法检查当前请求是否为ajax请求。
if (FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest()) {
// It's an ajax request.
}
如果您不在JSF上下文内,例如在内Filter
,则可以按以下方法检查当前请求是否为JSF ajax请求。
if ("partial/ajax".equals(request.getHeader("Faces-Request"))) {
// It's a JSF ajax request.
}
这是一个难题……假设您正在使用f:ajax标记和apache shiro之类的东西,并且您的会话将过期。
然后,您返回并单击附加了f:ajax的按钮。服务器将响应302重定向到登录页面。用户什么都看不到。 他们可以反复单击并调用ajax调用,但对他们来说,该应用程序只是“死”。
强制对ajax请求进行重定向需要特殊的XML响应。当您在JSF上下文中时,ExternalContext#redirect()
已经隐式考虑了这一点。您所需要做的就是编写以下代码:
FacesContext.getCurrentInstance().getExternalContext().redirect(url);
如果您不在JSF上下文之内,例如在之中Filter
,那么您需要自己编写整个XML响应。例如
response.setContentType("text/xml");
response.getWriter()
.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
.printf("<partial-response><redirect url=\"%s\"></redirect></partial-response>", url);
问题内容: 我有一个带有许多按钮的程序,所有这些按钮都将执行相同的功能。我想知道是否有一种方法可以将单个侦听器附加到程序中所有现有的JButton。 问题答案: 就像是: 该会从事件使其知道哪个按钮被点击获取源对象。 如果您需要在Action中使用if / else逻辑,那么您应该创建一个单独的Action。如果代码不属于某个动作,请勿将其强制执行。
我有一个有许多按钮的程序,所有这些按钮都将执行相同的功能。我想知道是否有办法将一个侦听器附加到程序中所有现有的JButton。
我不知道如何在comboxbox上实现焦点侦听器。我知道这不是一件简单的事情,但其他人似乎已经让它工作[1][2][3],但是在仔细检查每个结果后,我无法复制他们的结果。在网络上进行了广泛的搜索,查看了最新的Oracle指南,Oracle文档等之后,我来到了这里。我的问题很简单: 目标是创建一个与谷歌搜索基本相同的字段。您可以输入搜索查询,它将在文本字段下方的下拉列表中填充可能的搜索匹配项。如果所
立即想到的解决方案是创建一个跟踪所有热键的arraylist,并让keylistener每次迭代它,以及另一个带有关联按钮的arraylist的arraylist。 有没有更优雅、更直接的方法?
我有jbpm系统(),我想在系统内使用一个全局的。我创建了简单的过程事件lestener: 我的pom。xml: 当我将其添加为部署依赖项并通过工作台将其声明为jbpm项目中的事件监听器时,一切都运行正常。 但是现在我有很多项目,把事件监听器附加到每个项目上很不舒服。因此,我在wildfly中创建了新模块: 已创建部署描述符。xml服务器级别: 因此,当我创建一个新的jbpm进程并通过工作台将其部
问题内容: 我需要在购物车中构建一个功能,该功能在发生某些更改(例如,产品被删除)时使用AJAX从服务器中检索模板的更新副本。我无法修改服务器端代码,也无法修改使购物车首先运行的JavaScript。(我知道这并不理想,但事实就是如此) 我想做的是每次购物车更新时都运行自己的JavaScript。 我想知道是否可以侦听AJAX调用 ,并在每次生成代码时运行我的代码。 问题答案: 要跟踪HTML文档