今天做一个功能时出现了这么一个错误!
用户登录成功之后 显示它的名称和职位(很典型)
我有两个表 一个用户 和一个 职位
登录成功之后 在action中把admin 放进 session 接着 在jsp上用这样获取职位:
结果一测试 : 就报下面这些错误:
哼 !
这就是典型延迟加载报错咯 spring session 生命周期 从jsp跑到dao 再回去jsp 跑完一遍 session就失效了 再拿数据就出现这种问题~
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ROLE_ID", nullable = false)
public CrmRole getCrmRole() {
return this.crmRole;
}
上面是我实体类配置
虽然加载类型是lazy 但是 我web.xml中是加了 filter的。
这种情况下 还报错 ?
然后 我在jsp 把${admin.crmRole.name } 改用 sturts2 标签 <S:property value ="employee.crmRole.name"> 之后 再次刷新
错误没了
${} 是el标签 而 <s:property value=""/>是属于sturts2的 但是呢 sturts又是spring集成的 所以 此时sturts2是可以再开一个session 去拿职位表的值
综上所述 只要替换${***.***.name } 为 <S:property value ="***.***.name"> 即可
别问我是怎么知道的 因为我他么真的编不下去了 !!!