Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 会话处理的托管Beans Lyfecycle问题_Jsf_Jakarta Ee_Javabeans_Managed_Session Scope - Fatal编程技术网

Jsf 会话处理的托管Beans Lyfecycle问题

Jsf 会话处理的托管Beans Lyfecycle问题,jsf,jakarta-ee,javabeans,managed,session-scope,Jsf,Jakarta Ee,Javabeans,Managed,Session Scope,我是一个对MB JSF生命周期有问题的新手: 我得到了两个会话管理bean(MB),一个用于输入,另一个用于验证和数据库写入。 在ValidationData MB中,我注入InputData MB: @ManagedBean(name = "validationData") @SessionScoped public class Validation implements Serializable { @ManagedProperty(value = "#{inputData}")

我是一个对MB JSF生命周期有问题的新手:

我得到了两个会话管理bean(MB),一个用于输入,另一个用于验证和数据库写入。 在ValidationData MB中,我注入InputData MB:

@ManagedBean(name = "validationData")
@SessionScoped
public class Validation implements Serializable {
    @ManagedProperty(value = "#{inputData}")
    private InputData inputData
    ...
在验证过程结束时,我通过以下方式终止InputData MBean:

HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
    String sessionId = session.getId();
    session.removeAttribute("inputData");
我的问题是,对于第二次验证,我显然仍然在validatioNData Bean中获取第一个inputData Bean的数据。(我看到了我的第一个inputData MBean的preDestroy指令,这是我的第一次验证)

有什么帮助吗

谢谢
GLO

您不必从任何作用域中删除托管bean。从会话映射中删除bean与最终销毁bean并不相同(即使调用了@PreDestroy注释的方法),因此这可能是您面临旧值的原因。我建议实现一个不依赖于删除会话范围bean的解决方案。您可能希望将验证逻辑移动到不同的验证器,请参阅。