【问题标题】:Setting non-serializable attribute value into HttpSession将不可序列化的属性值设置为 HttpSession
【发布时间】:2015-01-11 05:29:29
【问题描述】:

我在部署项目时有时会出错,但不是每次都这样。 Localbean不工作时出错

错误信息

Warning:   JSF1063: WARNING! Setting non-serializable attribute value into HttpSession (key: localBean, value class: LocalBean).

本地豆

package com.mycompany.crm;

import java.io.Serializable;
import java.util.Locale;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@SessionScoped

public class LocalBean implements Serializable{
    public Locale locale;

    @PostConstruct
    public void init() {
        locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
    }

    public Locale getLocale() {
        return locale;
    }

    public String getLanguage() {
        return locale.getLanguage();
    }

    public void setLanguage(String language) {
        locale = new Locale(language);
        FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
    }
}

【问题讨论】:

  • 将您的日志设置更改为调试。我敢打赌,原因是别的,glassfish 可能会为您报告错误的错误消息
  • 如何将日志设置更改为 DEBUG?
  • 中间的问题你解决了吗?

标签: java jsf glassfish-4 serializable httpsession


【解决方案1】:

尝试在您的类中放置一个 serialVersionUID 字段,例如:

private static final long serialVersionUID = -1;

【讨论】:

  • 你的类似乎没问题,应该是可序列化的,日志中是否还有其他内容显示异常? LocalBean 是其他类的属性吗?
  • 还有这样的错误信息,JSF1074: Managed bean named 'localBean' has already been registered。用 LocalBean 替换现有的托管 bean 类类型 com.mycompany.crm.LocalBean。
  • 也许你映射你的 bean 两次,尝试在你的代码中搜索另一个名为 localBean 的 bean 或更改你的 bean 名称,如 @ManagedBean(name="myLocalBean")
猜你喜欢
  • 2017-06-02
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
相关资源
最近更新 更多