当前位置:  开发笔记 > 前端 > 正文

在jsf中没有生成会话

如何解决《在jsf中没有生成会话》经验,为你挑选了1个好方法。

在JSP中,有一个属性会话用于请求中的禁用自动生成会话.

<%@page contentType="text/html" pageEncoding="UTF-8" session="false" %>

有没有办法在JSF2中做同样的事情?

谢谢

为什么?因为我们将公共注册表单页面作为应用程序中的默认页面.这是一个非常简单的表单,每次人(或机器人等)请求主页时都会创建会话.ManagedBean是RequestScope,但JSF在第一个navegation请求中创建一个会话.



1> BalusC..:

只是不要使用视图/会话作用域bean(因此只使用请求或应用程序作用域bean)并通过在中设置以下上下文参数来设置状态保存client而不是(默认).serverweb.xml


    javax.faces.STATE_SAVING_METHOD
    client

然后,JSF将不会创建会话,并且会javax.faces.ViewState在必要时将视图状态存储在隐藏的输入字段中,并在表单中包含名称.

然而,创建和管理会话的成本几乎可以忽略不计.此外,在使用客户端视图状态保存时,您仍需要权衡(反)序列化视图状态和网络带宽的成本.


根据您的评论更新:

@BalusC是的,这可能是一个全球性的解决方案.但我只需要在这个公共页面中使用此方法.在其他页面我想要服务器端状态保存方法.

啊对.抱歉,我没有在JSF/Facelets中看到任何方法来禁用会话或更改基于每个请求的视图状态保存.我考虑使用纯HTML

而不是JSF ,让它提交到另一个JSF页面并使用@ManagedProperty与JSF页面关联的bean.例如


    
    
    

@ManagedBean
@RequestScoped
public class Register {

    @ManagedProperty(value="#{param.username}")
    private String username;

    @ManagedProperty(value="#{param.password}")
    private String password;

    @PostConstruct
    public void init() {
        // Do your thing here.
        System.out.println("Submitted username/password: " + username + "/" + password);
    }

    // ...
}

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