什么是IoVC
IoVC是
Inversion of View Control的縮寫,意思是視圖反轉(zhuǎn)控制,是AOM的核心特性之一,IoVC實現(xiàn)了將對UI的控制力轉(zhuǎn)移到ManagedBean中,UI完全不關(guān)心誰會來使用它本身,也不需要關(guān)心在上面所展現(xiàn)的數(shù)據(jù)內(nèi)容是什么,從而實現(xiàn)了UI與控制邏輯的完全分離,簡言之,IoVC是一種更高層次的MVC。
初一看,IoVC好像也沒什么特別的,甚至有點概念炒作的嫌疑,但是真正使用它、理解它之后,你會發(fā)現(xiàn),它所提供的編程模型為你的開發(fā)帶來了實質(zhì)性的幫助。
IoVC帶來了什么
IoVC提供了“綁定”、“多語言支持”、“資源注入”、“邏輯事件”等特性,這些特性主要作用在ManagedBean上面,ManagedBean是位于UI與業(yè)務(wù)服務(wù)之間的協(xié)調(diào)者,基于這些特性,在ManagedBean中,一方面可以對UI實現(xiàn)完全的控制,另一方面,可以靈活自然的與業(yè)務(wù)服務(wù)進行交互。
托管Bean的簡化
傳統(tǒng)方式中,編寫一個ManagedBean,需要編寫faces-config.xml文件,例如編寫兩個ManagedBean,UserBean與DepartmentBean,其中UserBean需要引用DepartMentBean,需要采用下面的方式來聲明faces-config.xml文件:
<managed-bean>
<managed-bean-name>DepartmentBean</managed-bean-name>
<managed-bean-scope>session</managed-bean-scope>
<managed-bean-class>demo.DepartmentBean</managed-bean-class>
</managed-bean>
<managed-bean>
<managed-bean-name>UserBean</managed-bean-name>
<managed-bean-scope>session</managed-bean-scope>
<managed-bean-class>demo.UserBean</managed-bean-class>
<managed-property>
<property-name>departmentBean</property-name>
<property-class>demo.DepartmentBean</property-class>
<value>#{DepartmentBean}</value>
</managed-property>
</managed-bean>
IoVC提供了@ManagedBean、@ManagedProperty、@MapEntries、@ListEntries等關(guān)于ManagedBean定義的一整套完整的標(biāo)簽,上面的定義,在IoVC中將會轉(zhuǎn)變?yōu)槿缦路绞街苯勇暶髟诖a中,無需維護faces-config.xml文件:
@ManagedBean
public class DepartmentBean
{

}
@ManagedBean
public class UserBean
{
@ManagedProperty("#{DepartmentBean}")
private DepartmentBean departmentBean;

}
關(guān)于IoVC剩余的幾個特性的支持的描述,我將會陸續(xù)寫一些文章來進行深入介紹。
在把“IoVC是什么、IoVC能夠做什么”這些基本問題解釋清楚后,我計劃探討一下“IoVC是怎么實現(xiàn)的?”,以及“為什么有了IoVC之后,組件的無狀態(tài)就可以變成可能?”等問題。
綁定(Binding)
資源注入 (Injection)
多語言支持
邏輯事件
“無狀態(tài)組件”的傳說