当前位置:  开发笔记 > 编程语言 > 正文

禁用seam的重定向过滤器

如何解决《禁用seam的重定向过滤器》经验,为你挑选了1个好方法。

我正在做一个需要安静网址的接缝项目.我有一个映射到/ group/{group}/{locale}的视图.在那个页面上,我有一个所谓的消息列表.每条消息都有一个按钮,用于保存对消息的更改.这链接到这样的动作bean:


每条消息都有一个锚点,因此/ group/{group}/{locale}#{id}可用于使浏览器转到该锚点.这就是我在POST后需要重定向的原因:


  

  
  

  
    
  

我还有以下重定向规则(UrlRewriteFilter)来获取正确的RESTful URL:


  ^/group.xhtml\?group=([\.\w]+)&locale=([\.\w]+)\#([\.\w]+)\?cid=(\d*)$
  /group/$1/$2#$3

我在这里删除了对话.这已被测试过一部作品.然而,接缝仍会附加'?conversationId = {cid}'.所以有什么问题?好吧,想象一下像'/ group/{group}/{locale}#{id}?conversationId = {cid}'这样的网址.显然浏览器不喜欢这个,并且不会自动转到那个锚点.

我做了一些研究,发现我在缝文档中的问题:

29.1.4.2.使用重定向进行对话传播 此过滤器允许Seam跨浏览器重定向传播对话上下文.它拦截任何浏览器重定向,并添加一个指定Seam会话标识符的请求参数.重定向过滤器将默认处理所有请求,但也可以在components.xml中调整此行为:


我不需要重定向过滤器,我尝试在url-pattern中放置一些无效的东西来"禁用"过滤器.但是那没用.所以现在我的问题是:

如何在接缝中禁用重定向过滤器?

我找不到答案.seam文档讨论了在web.xml中禁用它,但我的尝试还没有成功.



1> Peter Hilton..:

我已经找到了不需要的conversationId查询字符串参数来自哪里.

在的通话效果org.jboss.seam.faces.FacesManager.redirect(String viewId, Map parameters, boolean includeConversationId)

这是从以下代码中调用的,org.jboss.seam.faces.Navigator其中sets设置includeConversationId为true:

  FacesManager.instance().redirect(viewId, parameters, true);

我看不出有任何方法可以避免这种情况,因此修复/解决方法是在操作方法中以编程方式执行重定向:

  FacesManager.instance().redirect(viewId, parameters, false);

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有