Java JSP中的自定义标记不能与Spring会话筛选器一起使用

Java JSP中的自定义标记不能与Spring会话筛选器一起使用,java,spring,jsp,jsp-tags,spring-session,Java,Spring,Jsp,Jsp Tags,Spring Session,我正在尝试在遗留应用程序上实现Spring会话。除了我发现自定义标记支持有问题外,其他一切似乎都正常工作 我对标签不是很熟悉,但我会尽力解释这个问题。TagSupport类从会话中获取一个对象,并对其进行检查,以查看是否应显示JSP的某些部分 代码与此类似: public int doStartTag() throws JspException { //get object from session ServletRequestAttributes attr = (Servlet

我正在尝试在遗留应用程序上实现Spring会话。除了我发现自定义标记支持有问题外,其他一切似乎都正常工作

我对标签不是很熟悉,但我会尽力解释这个问题。TagSupport类从会话中获取一个对象,并对其进行检查,以查看是否应显示JSP的某些部分

代码与此类似:

public int doStartTag() throws JspException {
    //get object from session
    ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
    HttpSession session = attr.getRequest().getSession(true);
    Foo foo = (Foo)session.getAttribute("foo");

    if(foo!= null){
        return Tag.EVAL_BODY_INCLUDE;
    }
    return Tag.SKIP_BODY;
}
问题是。。调试时,我看到doStartTag()方法中的代码被多次执行。前两次
foo
被正确填充,该方法给出了所需的返回值,但随后又执行了3次该方法,并且
foo
为空。(在我试图加载的页面上,标记被调用了两次。)

如果从my web.xml中删除
springSessionRepositoryFilter
,doStartTag方法仍会执行多次,但每次填充
foo
对象并正确呈现网页时都会执行

我不知道为什么
doStartTag()
代码会执行多次,尽管我认为这不是问题所在。我确认控制器只被击中一次。我试着调试中间发生的事情,但这是非常困难的。我还可以看到我有两个会话对象,一个叫做
JESSIONID
,另一个叫做
session
。我也不确定这是否是个问题

我有点不知所措,如果有人有任何建议,我将不胜感激。多谢各位

我在这里使用指南实现了spring会话:
在此过程中,我更新了一些spring库,因此库冲突不是不可能的。

相关页面上是否多次出现标签?相关页面上是否多次出现标签?