本站不再更新,欢迎光临 java开发技术网
随笔-230  评论-230  文章-8  trackbacks-0

Struts的Indexed属性用处

banq http://www.jdon.com Mar 3, 2004 4:19 PM 回复此消息回复

说明:这是Struts的一种高级用法,struts-el中有相关说明,这里讨论在一般struts标签库下如何实现。

场景:
有一个JavaBeans:如下:


publicclass LabelValueBean implements Serializable {
public LabelValueBean(String label, String value) {
this.label = label;
this.value = value;
}
private String label;

public String getLabel() {
returnthis.label;
}

publicvoid setLabel(String label) {
this.label = label;
}

private String value;

public String getValue() {
returnthis.value;
}

publicvoid 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());
}


}



这是非常普通的JavaBeans, 如果ActionForm是这样:


publicclass TestBean extends ActionForm {

.....
private List lvbeans = new ArrayList();

.....




lvbeans是LabelValueBean的集合,如此组合,如果需要在Jsp页面中对LabelValueBean的label和value值进行增删改,怎么办?

使用indexed属性,TestBean类如下:


publicclass 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;
}

.....



注意上述两个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数值了。

posted on 2006-06-16 15:50 有猫相伴的日子 阅读(828) 评论(0)  编辑  收藏 所属分类: j2ee

只有注册用户登录后才能发表评论。


网站导航:
 
本站不再更新,欢迎光临 java开发技术网