1) 一部分用於表達JavaBean之間的嵌套關係html
2) 另外一部分可以在特定的嵌套級別提供和其餘Struts標籤相同的功能。jsp
a) <nested:nest>,定義一個新的嵌套級別spa
b) <nested:writeNesting>,輸出當前嵌套級別信息hibernate
c) <nested:nest>標籤能夠表達JavaBean之間的嵌套關係orm
eg.htm
以三個JavaBean爲例,分別是:PersonForm Bean,Person Bean和Address Bean,在PersonForm Bean中包含一個Person Bean類型的屬性person,在Person Bean中又包含一個Address Bean類型的屬性address。對象
則用nested標籤表示以下:it
定義兩個<nested:nest>標籤,第一個<nested:nest>標籤嵌套在<html:form>標籤中,以下:io
<html:form action="/showPerson">ast
<nested:nest property="person">
LastName:
<nested:text property="lastName"/><BR>
.....
</nested:nest>
</html:form>
以上<nested:nest>標籤的上層JavaBean位於<html:form>表單標籤對應的PersonForm Bean,<nested:nest>標籤的property屬性爲「person",表明PersonForm Bean的person屬性,這個person屬性表明Person Bean,所以嵌套在<nested:nest>標籤內部的Nested標籤都相對於這個Person Bean,例如第一個<nested:text>標籤的property屬性」lastName「,表明Person Bean的lastName屬性。
第二個<nested:nest>標籤嵌套在第一個<nested:nest>標籤內部:以下
<html:form action="/showPerson">
<nested:nest property="person">
.............
<nested:nest property="address">
Current nesting is :
<nested:writeNesting/><br>
Street 1:<nested:text property="street1"/><BR>
</nested:nest>
</nested:nest>
</html:form>
在以上代碼中,第二個<nested:nest>標籤的property屬性爲「address",表明PersonBean 的address屬性,這個address屬性表明Address Bean,所以嵌套在第二個<nested:nest>標籤內部的Nested標籤都相對於這個Address Bean。
第二個<nested:nest>標籤內還嵌套了一個<nested:writeNesting>標籤,它顯示當前的嵌套級別,輸出結果爲」person.address".
在默認狀況下,<nested:nest>標籤的property屬性爲當前ActionForm Bean的某個屬性,或者位於上層<nested:nest>標籤對應的JavaBean的某個屬性。
可使用<nested:root>標籤來顯式指定頂層級別的JavaBean。
<nested:root>標籤的name屬性指定JavaBean的名字,嵌套在<nested:root>標籤中的<nested:nest>標籤的property屬性爲這個JavaBean的某個屬性。
許多Nestd標籤庫中的標籤具備和其餘標籤庫中的標籤相同的功能,區別在於Nested標籤庫中的標籤屬性相對於當前的嵌套級別,例如
<nested:nest property = "person">
Last name :<nested:text property="lastName"/>
</nested:nest>
上面的<nested:text>標籤和<html:text>標籤具備相同的功能,均可以生成文本框,二者的區別在於<nested:text>標籤的property屬性爲位於當前嵌套級別對應的JavaBean的某個屬性,而<html:text>標籤的property屬性爲於當前表單對應的ActionForm Bean的某個屬性。
好比我有一個User類和一個UserInfo類,前者記錄用戶的賬號密碼,後者記錄用戶的詳細信息。前者也有一個UserInfo屬性,這樣它們二者是嵌套了。
如今我要把這個用戶的賬號和詳細信息都顯示到界面上。
一種方式是在actionForm中用兩個屬性User user和UserInfo userInfo來存儲,在jsp中就能夠用以下方式顯示出來:
<nested:nest property="user">
賬號:<nested:write property="account"/>
</nested:nest>
<nested:nest property="userInfo">
姓名:<nested:write property="name"/>
性別:<nested:write property="sex"/>
</nested:nest>
因爲user和userInfo自己就是嵌套的,因此第二種方式就在actionForm中使用一個User user屬性便可:
<nested:nest property="user">
賬號:<nested:write property="account"/>
<nested:nest property="userInfo">
姓名:<nested:write property="name"/>
性別:<nested:write property="sex"/>
</nested:nest>
</nested:nest>
這樣處理是否是很方便了,actionForm能夠直接放上數據存儲對象,若是使用了hibernate作數據持久層,咱們就能夠直接把持久化對象放入actionForm來顯示到界面上,不用在actionForm裏寫不少屬性來分別存儲數據,也免去了給這些屬性分別賦值的過程。
若是咱們把上邊例子中的<nested:write/>標記換成<nested:text/>,這就相似於<html:text/>標記,是一個輸入框,這樣咱們就能夠把界面上輸入一次提交到actionForm中的這個數據存儲對象,好比user。咱們在action中就能夠直接得到這個user進行處理,很是方便。