2011-02-24 46 views

回答

125

這取決於觀點(雙關語)。

在大的體系結構圖,你自己的JSF代碼是V

中號 - 商務域/服務層(如EJB/JPA/DAO)
V - 您的JSF代碼
ç - FacesServlet的

在顯影劑圖像,建築V依次迪維dable如下:

中號 - 實體
V - 的Facelets/JSP頁
Ç - 管理豆

在較小的客戶圖像時,顯影劑V是反過來可分割如下:

M - JSF組件樹
V - 渲染HTML輸出
Ç - 客戶端(web瀏覽器)

在更小的JavaScript的圖像,在客戶端V是反過來可分割如下:

中號 - HTML DOM樹
V - Visual presentation
C - Event listener func行動(終端用戶互動和阿賈克斯)

所以它基本上是一個M(M(M(MVC)C)C)C;)

請注意,有些新手甚至一些—非常基本—教程打成一片/複印/扁平化託管bean中的實體屬性,這將有效地使控制器成爲模型。不用說,這是糟糕的設計(即不是乾淨的MVC設計)。

在下面的答案的代碼片段演示正確的MVC方法:

+0

+1完全同意這兩種哲學,一般情況下大拱門更是如此。實時查看項目。 – 2011-02-24 12:55:54

+2

沒有得到雙關語,仍然有提升 – 2012-12-05 16:21:42

+1

託管bean是不是模型??? – 2013-06-07 07:43:58

34

中號奧德爾將是你ManagedBean

V IEW將jspXHTML(當然你可以適應這裏各種視圖)

Ç ontroller將FacesServlet

更新,希望這張圖可以幫到更多

enter image description here

+4

+1被調用,有道理,雖然我可能會說你模型是實體(如果有的話),控制器是Managed Beans(除了FacesServlet) – 2011-02-24 11:48:43

+0

@Jigar,如果'FacesServlet'是一個控制器,我不能擴展它。我不能擁有我自己的控制員......我同意Shervin的觀點,即Managed Beans是Controller。 Shervin,如何發佈你自己的替代答案? – yegor256 2011-02-24 12:08:19

+1

它是控制的祕密'FacesServlet'。 – 2011-02-24 12:09:07