国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts標簽中的多層logic:iterator詳解

2019-11-18 12:54:39
字體:
來源:轉載
供稿:網友

  logic:Iterator標簽(以下簡稱“該標簽”)是Struts里非經常用的一個標簽,其作用在于循環顯示給定容器對象中的值。
  
  如此常用的標簽,其源代碼當然需要拿出來研究一下,以下列舉幾條研究成果:
  
  1、該標簽內部使用Collection來表示給定的容器,所有的給定容器對象(如ArrayList,Map等)都會被其轉化成為Collection,Collection實際就是Map和List的父類。
  
  2、該標簽自己維護循環索引,不用程序員治理索引
  
  3、該標簽常見的幾個屬性如下:name、PRoperty、scope、id
  
  對應Struts給出的Api說明如下:
  
  name:包括要遍歷Collection的jsp頁面的bean的名字(假如property沒有被定義),或者是那些通過getter方法獲得屬性的Jsp中的Bean的名字,這些getter方法返回的是Collection(假如property定義了)。
  
  property:在name命名的Jsp bean中定義的屬性的名字,通過getter方法返回一個Collection
  
  scope:指示到哪里去尋找name為名字的bean,假如沒有定義缺省為"any scope"
  
  id:假如Collection非空的話,在每次遍歷時候Collection中每個元素的名字。
  
  其中除了id每個元素均為Rt eXPr,這兒的rt expr的意思就是Run Time Expression。明確的說就是,假如你對一個Attribute的<rtexprvalue>指定為true,你就可以在這樣的屬性中使用<%=%>之類的東東。這個配置文件在tld中。
  
  只有id是必須要說明的。
  
  關于Api說明的說明:
  
  id只是一個臨時標識,在下面的<bean:write里面出現的name屬性要和id一致才能打印出<bean:write的property,而此property就是在iterator中的屬性。
  
  舉例說明
  
  以下代碼生成一個階梯狀表格
  
  系統 資源 操作
  
  soft3
  res3
  opt3
  soft12
  res12
  opt1211
  soft11
  res11
  opt1111
  
  在此之前傳來一個request.getAttribute("userPurview"),所以有在第一個logic中的userPurview,就是在這個request里面尋找userPurview
  
  返回的是一個list
  

  <table width="300" border="0">
  <tr><td>系統</td>
  <td>資源</td>
  <td>操作</td>
  </tr>
  <logic:iterate id="targetSys" name="userPurview" scope="request"> //這個id可以隨便起名,但是要注重下文使用的一致性
  <tr bgcolor="#cccccc"><td height="21" class="unnamed2">
  <bean:write name="targetSys" property="cn"/>    //此處name和上面id保持一致,property就是第一個list里面的元素
  </td>
  <td height="21" class="unnamed2"> </td>
  <td height="21" class="unnamed3"> </td>
  </tr>
  <logic:iterate id="targetRes" name="targetSys" property="purviewResList">
  <tr><td height="21" class="unnamed2"> </td><td height="21" class="unnamed5">
  <bean:write name="targetRes" property="cn"/>
  </td>
  <td height="21" class="unnamed6"> </td>
  </tr>
  
  <logic:iterate id="targetOpr" name="targetRes" property="purviewOprList">
  <tr><td height="21" class="unnamed4"> </td><td height="21" class="unnamed4"> </td>
  <td height="21" class="redzi">
  <bean:write property="cn" name="targetOpr"/></td>
  </tr>
  </logic:iterate>
  
  </logic:iterate>
  
  </logic:iterate>
  </table>
  
  結論
  
  多級迭代和單層差不多,唯一注重的就是id和<bean:write中的name的對應,上級logic的id與下級logic的name對應,并且取出來的要是個Collection,name和id不一定實際需要這個bean,都是虛擬的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐边县| 云林县| 西充县| 达尔| 佛坪县| 大悟县| 桐乡市| 民乐县| 砀山县| 青川县| 盐边县| 广昌县| 丰城市| 辽源市| 衡水市| 辰溪县| 神池县| 花垣县| 遵化市| 双鸭山市| 酒泉市| 卢氏县| 璧山县| 连南| 宁武县| 石家庄市| 杭锦旗| 藁城市| 乐都县| 天门市| 泸定县| 丰镇市| 陇南市| 方城县| 洪江市| 庄浪县| 浪卡子县| 佛坪县| 浪卡子县| 惠东县| 绩溪县|