Struts的Indexed屬性用處
說明:這是Struts的一種高階用法,struts-el中有相關說明,這裡討論在一般struts標籤庫下如何實現。
場景:
有一個JavaBeans:如下:
這是非常普通的JavaBeans, 如果ActionForm是這樣:
lvbeans是LabelValueBean的集合,如此組合,如果需要在Jsp頁面中對LabelValueBean的label和value值進行增刪改,怎麼辦?
使用indexed屬性,TestBean類如下:
注意上述兩個get方法很重要,Jsp頁面程式碼如下:
這樣,執行後的輸出結果是:
這樣修改TestBean中的List中的LabelValueBean數值了。
參考:
場景:
有一個JavaBeans:如下:
public class LabelValueBean implements Serializable { public LabelValueBean(String label, String value) { this.label = label; this.value = value; } private String label; public String getLabel() { return this.label; } public void setLabel(String label) { this.label = label; } private String value; public String getValue() { return this.value; } public void setValue(String value) { this.value = value; } public String toString() { StringBuffer sb = new StringBuffer("LabelValueBean["); sb.append(this.label); sb.append(", "); sb.append(this.value); sb.append("]"); return (sb.toString()); } } <p class="indent"> |
這是非常普通的JavaBeans, 如果ActionForm是這樣:
public class TestBean extends ActionForm { ..... private List lvbeans = new ArrayList(); ..... } <p class="indent"> |
lvbeans是LabelValueBean的集合,如此組合,如果需要在Jsp頁面中對LabelValueBean的label和value值進行增刪改,怎麼辦?
使用indexed屬性,TestBean類如下:
public class TestBean extends ActionForm { ..... private List lvbeans = new ArrayList(); public TestBean(){ //初始化數值 lvbeans.add(new LabelValueBean("1", "1")); lvbeans.add(new LabelValueBean("2", "2")); lvbeans.add(new LabelValueBean("3", "3")); } public LabelValueBean getLvbeans(int index) { return (LabelValueBean)lvbeans.get(index); } public List getLvbeans() { return lvbeans; } ..... } <p class="indent"> |
注意上述兩個get方法很重要,Jsp頁面程式碼如下:
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <jsp:useBean id="test2" scope="page" class="test.TestBean"/> <h2>Test: <logic:iterate name="test2" property="lvbeans" id="foo" indexId="ctr"> <html:text name="test2" property='<%= "lvbeans[" + ctr + "].label" %>' /> </logic:iterate> </h2> |
這樣,執行後的輸出結果是:
<h2>Test: <input type="text" name="lvbeans[0].label" value="1"> <input type="text" name="lvbeans[1].label" value="2"> <input type="text" name="lvbeans[2].label" value="3"> </h2> |
這樣修改TestBean中的List中的LabelValueBean數值了。
參考:
http://jakarta.apache.org/struts/faqs/indexedprops.html
參考文中有些說不清楚,注意陷井。
相關文章
- 對Struts的Indexed屬性用處深層次思考Index
- banq:請教一個問題,我看了你Struts的Indexed屬性用處的文章...Index
- 請問關於Struts的Indexed屬性的問題Index
- Struts 1.1的Indexed Properties 值得關注Index
- struts2 status屬性
- 在Struts中如何處理ActionForm中包含日期型別屬性的情況ORM型別
- struts2配置中的method{數字}屬性
- Struts FormBean 裡 Long型屬性取不到null嗎?ORMBeanNull
- Struts2的屬性驅動與模型驅動的區別模型
- 05. struts2中為Action屬性注入值
- css的表格處理相關屬性CSS
- Struts2幾個常用標籤的主要屬性及示例(一)
- 關於struts2 action中map型別屬性的對映型別
- 【Oracle】修改indexed 欄位是否影響索引的有效性OracleIndex索引
- jsp,struts,mysql分頁_Iterator有沒屬性可以傳值?JSMySql
- 關於struts,webwork,jetspeed,turbine等的適用性問題Web
- CMake 屬性之全域性屬性
- JS物件繼承時,對引用屬性的處理JS物件繼承
- Android應用程式的debug屬性Android
- 用屬性封裝 Session 及 VIewState 的存取封裝SessionView
- WPF 屬性系統 依賴屬性之記憶體佔用分析記憶體
- iOS動畫 屬性屬性解析iOS動畫
- defer 屬性和 async 屬性
- MAX or MIN of Indexed ColumnIndex
- Python 類的屬性與例項屬性Python
- css的屬性CSS
- 用程式設定COM+應用程式的屬性。 (轉)
- CUDA(五)用deviceQuery看GPU屬性devGPU
- infile * 不能和str屬性連用
- mongodb用mongoose查庫的物件,不能增加屬性MongoDB物件
- 雲原生應用的十個關鍵屬性
- jQuery的動畫效果可以應用與哪些屬性jQuery動畫
- js物件的屬性的運用簡單介紹JS物件
- CSS 屬性篇(七):Display屬性CSS
- CMake 屬性之目標屬性
- CMake 屬性之目錄屬性
- js如何獲取給定屬性的屬性值JS
- 使用 Spring 更好地處理 Struts 動作----三種整合 Struts 應用程式與 Spring 的方式Spring