struts標籤——nested

Struts Nested標籤庫的分兩部分:

1) 一部分用於表達JavaBean之間的嵌套關係html

2) 另外一部分可以在特定的嵌套級別提供和其餘Struts標籤相同的功能。jsp

a)   <nested:nest>,定義一個新的嵌套級別spa

b)   <nested:writeNesting>,輸出當前嵌套級別信息hibernate

c)   <nested:nest>標籤能夠表達JavaBean之間的嵌套關係orm

eg.htm

以三個JavaBean爲例,分別是:PersonForm BeanPerson BeanAddress Bean,在PersonForm Bean中包含一個Person Bean類型的屬性person,在Person Bean中又包含一個Address Bean類型的屬性address對象

則用nested標籤表示以下:it

定義兩個<nested:nest>標籤,第一個<nestednest>標籤嵌套在<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 Beanperson屬性,這個person屬性表明Person Bean,所以嵌套在<nested:nest>標籤內部的Nested標籤都相對於這個Person Bean,例如第一個<nested:text>標籤的property屬性」lastName「,表明Person BeanlastName屬性。

第二個<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的某個屬性。

和其餘標籤庫中的標籤功能相同的Nested標籤


許多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    userUserInfo    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>  


  
 因爲useruserInfo自己就是嵌套的,因此第二種方式就在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進行處理,很是方便。

相關文章
相關標籤/搜索