JSP中的自定义标记不使用Spring Session过滤器

时间:2017-01-08 04:03:05

标签: java spring jsp jsp-tags spring-session

我正在尝试在遗留应用程序上实现Spring Session。除了我发现自定义TagSupport出现问题的问题外,一切似乎都有效。

我对标签不是很熟悉,但我会尝试解释这个问题。 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为空。 (在我试图加载的页面上调用标记两次。)

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

我不确定为什么doStartTag()代码会执行多次,尽管我不认为这是问题所在。我验证控制器只打了一次。我已经尝试过调试两者之间发生的事情,但是它在杂草中很常见。我还可以看到我有两个会话对象,一个名为JESSIONIDSESSION。我不确定这是否也是一个问题。

我有点过头了,如果有人有任何指示,我将不胜感激。非常感谢你。

我使用此处的指南实施了春季会话:http://docs.spring.io/spring-session/docs/current/reference/html5/guides/httpsession-xml.html 在这个过程中,我更新了一些弹簧库,因此图书馆冲突是不可能的。

0 个答案:

没有答案
相关问题