GlassFish正在为每个请求创建一个新的JSESSIONID

问题描述 投票:2回答:1

我有一个由命名bean支持的简单页面。该页面也使用了primefaces,但是我没有在该页面中执行任何ajax操作。该应用程序托管在Glassfish 5.1上。

@Named("cardsView")
@RequestScoped
public class CardsViewBean implements Serializable {
   ...
}

这是xhtml页面。如您所见,我正在将bean传递给主xhtml,不确定是最佳实践还是问题的根源。

<ui:composition template="/fragment/master.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:ipc="http://java.sun.com/jsf/composite/component">

    <ui:param name="bean" value="${cardView}" />

    <ui:define name="content">
    .....
    </ui:define>

</ui:composition>

据我了解,请求范围内的bean仅用于该请求。

但是,当我查看浏览器检查器时,可以看到每次我访问页面时都会创建一个新的JSESSIONID。因此,我认为显然有些东西我配置有误,但不确定在哪里看。

jsf jsf-2 jsessionid
1个回答
0
投票

实际上,每页有2个请求。初始请求和回发请求。首先,客户端请求获取页面。它本身就是完整的请求。要求:http://example.com/index响应:html页面。用户点击“提交”按钮或另一个按钮或链接后,浏览器再次请求另一个页面。要求:http://example.com/login回应:另一页。换句话说,Jsf或任何Ui框架通过各种技术和方法在2个对我们的请求之间保存信息见this question about Initial request and postback requestJsf lifecycleprimeFaces lifeCycle show case编码愉快!

© www.soinside.com 2019 - 2024. All rights reserved.