0

伙计们,我正在使用带有 spring 的 jsf 2.0。我已经用@PostConstruc 注释了托管bean 中的一个方法,但是如果在bean 中没有连接到jsf 页面的字段,那么即使在jsf 页面中有一个连接到的操作方法也不会调用@PostConstruct 方法豆。先感谢您。

添加了解释代码:

这是我的 BackingManagedBean

@ManagedBean(name="utenteBean")
@ViewScoped
public class UtenteBean extends SupportBean implements Serializable

虽然这是我的 ControllerManagedBean

@ManagedBean(name="gestisciUtentiController")
@ViewScoped
public class GestisciUtentiController extends MessageSupportBean implements Serializable {

@ManagedProperty(value="#{utenteBean}")
private UtenteBean utenteBean;
public void setUtenteBean(UtenteBean utenteBean) {
    this.utenteBean = utenteBean;
}

    @PostConstruct
    public void loadBean()
    {
        try
        {
            utenteBean.setUtentis(getFacadeFactory().getUtenteFacade().readAllOrdered(Utente.class, "username"));
        }
        catch (ApplicationException e)
        {
            setExceptionMessage(e.getLocalizedMessage(), e.getLocalizedMessageDetail());
        }
    }
4

1 回答 1

0

http://blog.icefaces.org/blojsom/blog/default/2009/04/23/Making-distinctions-between-different-kinds-of-JSF-managed-beans/我正在尝试使用这个方法。你认为这种方法不正确吗?–

我不确定。那篇文章提到模型通常被放置在会话范围内。这实际上是一个糟糕的方法。如果会话范围的 bean 是登录用户并且请求范围的 bean 绑定到表单,那么在请求范围的 bean 中注入会话范围的 bean 是有意义的。

在您的情况下,您应该只使模型 bean 成为控制器 bean 的属性并使用#{gestisciUtentiController.utenteBean.someProperty}而不是#{utenteBean.someProperty}.

我之前有一些“JSF 设计”问题,您可能会发现它们也很有用:

于 2011-04-22T22:41:10.040 回答