我正在与弹簧+ primefaces应用何时会再次调用JSF @PostConstruct?
我在托管bean创建初始化函数加载一些有用的数据(bean是@ViewScope
)
@PostConstruct
public void init(){
log.debug("initing....");
currentUser = UserUtil.getCurrentUser(this.userManager);
loadData();
}
鉴于以后我有一些标签隐藏的列是这样的:
<p:column rendered="#{dataManagedBean.currentUser.manager}"> // to test if the current user is a manager role
...
...
</p:column>
的问题是,当我用普通用户登录,那么即使退出,并与经理的用户,我想说明没有显示列登录,因为init()
方法不再因此调用“当前用户”仍然是oldone(正常发售者)
UPDATE
问题,也许我是混合春DI和JSF管理的bean,有更详细
-
在的JavaBean层
- :我用
@Entity
注释为在DAO层冬眠 - :我用
@Repository("DataDao")
注入DAOS(由 弹簧) - 在经理层:我用用很多Spring注解像
@Service("DataManager")
@Authowire
@Qualifier
等 在视图层
- 注入,因为我一直在使用的弹簧注入,这就是为什么我 使用
@Component("DataManagedBean")
和@ViewScope
我已经有了两周的应用程序,并且一切都按预期工作。直到我今天发现@PostConstruct实际上再也没有打过电话,视图永远不会被破坏:S(或者它的工作就像这样,一个单身...)
有人可以好心解释我在哪里做错了吗?
我不确定,但我认为只要你保持相同的观点,你只需要初始化它一次。你是否呆在同一页面? – Leo 2014-10-02 01:18:46
不,用户点击“注销”后重定向到注销页面,然后登录页面。我已更改为sessionScope并仍然发生相同 – Kossel 2014-10-02 01:43:49
可能您有一些在您的模板中使用#{dataManagedBean.xxx}的属性。你用那样吗? – wittakarn 2014-10-02 01:54:24