如果仅声明操作方法,则@PostConstruct不起作用

时间:2011-04-22 21:15:00

标签: spring jsf annotations jsf-2 postconstruct

伙计们我正在使用带弹簧的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());
        }
    }

1 个答案:

答案 0 :(得分:0)

  

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

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

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

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