2011-04-22 61 views
0

夥計我使用jsf 2.0與春天。 我使用@PostConstruc在託管bean中註釋了一個方法,但是如果在bean中沒有字段連接到jsf頁面,即使在jsf頁面中有一個操作方法連接到@PostConstruct方法,也不會調用@PostConstruct方法豆。 預先感謝您。@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()); 
     } 
    } 
+0

究竟如何,是'@ PostConstruct'有用的,如果你沒有任何呈現視圖的東西?那時你基本上沒有什麼準備。你有什麼樣的代碼?什麼是功能要求? – BalusC 2011-04-22 21:49:41

+0

我試圖讓不同類型的託管bean,例如我有ModelManagedBean具有頁面和ControllerManagedBean具有操作方法的所有屬性。現在我認爲在ControllerManagedBean中,我必須調用postConstruct方法來初始化,例如ModelManagedBean的List對象 – 2011-04-22 21:53:33

+0

使模型成爲控制器的屬性。那麼它不應該是'@ ManagedBean'。 – BalusC 2011-04-22 21:59:33

回答

0

http://blog.icefaces.org/blojsom/blog/default/2009/04/23/Making-distinctions-between-different-kinds-of-JSF-managed-beans/我試圖用這個計算策略。你認爲那種接近是不正確的? -

我不確定。該文章提到模型通常被放置在會話範圍內。這實際上是一個糟糕的做法。如果會話作用域的範圍是例如登錄用戶,並且請求作用域被綁定到窗體,則在請求作用域bean中注入會話作用域bean是有意義的。

在你的情況下,你應該讓模型bean成爲控制器bean的一個屬性,並使用#{gestisciUtentiController.utenteBean.someProperty}而不是#{utenteBean.someProperty}

我以前的一些 「JSF設計」 的問題,你會發現他們有用的: