您的位置:首页 > 编程语言 > Java开发

Java WEB开发时struts标签 显示set内容

2010-05-19 15:13 495 查看
在struts中有好多的标签方便开发,比如<logic:iterate>标签,可以很好的显示list的内容:

(一)对List的循环遍历:

  1.先定义一个User类:

import java.io.Serializable;
public final class User implements Serializable {
private String name = null;
private String password = null;

public String getName () {
return (this.name);
}

public void setName(String name) {
this.name = name;
}

public String getPassword () {
return (this. password);
}

public void setPassword (String password) {
this. password = password;
}

}


 

  2.建立jsp文件如:

<%@ page language="java" %>
<%@ page import="example.*"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%
java.util.ArrayList list = new java.util.ArrayList();
User usera=new User();
usera.setName("white");
usera.setPassword("abcd");
list.add(usera);
User userb=new User();
userb.setName("mary");
userb.setPassword("hijk");
list.add(userb);
session.setAttribute("list", list);

%>

<html><body><table width="100%">

<logic:iterate id="a" name="list" type=" example.User ">

<tr><td width="50%">

name: <bean:write name="a" property="name"/> 或者${a.name} 或者 ${a["name"]}

<td/><td width="50%">

password: <bean:write name="a" property="password"/>

</td></tr>

</logic:iterate>
</table></body></html>


 

 这里
<logic:iterate id="a" name="list" type=" example.User "> 

</logic:iterate> 

 "id"是在iterate循环的时候使用的内部循环变量,指代list中的一个实例,name指代的是在request、session、response等中的变量名

  <bean:write name="a" property="name"/>标记是用来显示的,也可用EL表达式如:${a.name}或${a["name"]}

      注:EL 提供“.“和“[ ]“两种运算符来存取数据。
     当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[ ]“。例如:
         ${user.My-Name}应当改为${user["My-Name"] }
     如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
         ${sessionScope.user[data]}中data 是一个变量

(二)对数组进行循环遍历:

   

<%
String[] testArray={"str1","str2","str3"};
pageContext.setAttribute("test",testArray);
%>
<logic:iterate id="show" name="test">
<bean:write name="show"/>
或者${show}
</logic:iterate>


 

 (三)对集合Map的输出

如:有数据

HashMap<String,TestIterate> hm = new HashMap<String,TestIterate>();
hm.put("11",new TestIterate("aa",11));
hm.put("22",new TestIterate("bb",22));
hm.put("33",new TestIterate("cc",33));
hm.put("44",new TestIterate("dd",11));
hm.put("55",new TestIterate("ee",22));
hm.put("66",new TestIterate("ff",33));

request.setAttribute("hm",hm);


 

则页面输出可写成:

 

<logic:iterate id="h" name="hm" scope="request">
name:<bean:write name="h" property="value.name"/> age:<bean:write name="h" property="value.age"/><br/>
</logic:iterate>


 

或者用EL写作:

 

<logic:iterate id="h" name="hm" scope="request" length="2" offset="1">
${h["key"] } + ${h.value["name"] }<br/>
</logic:iterate>


 

其中length属性指定了输出元素的个数,offset属性指定了从第几个元素开始输出,如此处为1,则表示从第二个元素开始输出

另外,该标记还有一个indexId属性,它指定一个变量存放当前集合中正被访问的元素的序号,如:
程序代码:

<logic:iterate id="h" name="hm" scope="request"  indexId="number">
   第${number}个:${h["key"] } + ${h.value["name"] }<br/>
</logic:iterate>

 

(四)嵌套遍历:

程序代码:

 
<%
String[] colors={"red","green","blue"};
String[] countries1={"中国","美国","法国"};
String[] persons={"乔丹","布什","克林顿"};
ArrayList list2=new ArrayList();
list2.add(colors);
list2.add(countries1);
list2.add(persons);
pageContext.setAttribute("list2",list2);
%>
<logic:iterate id="first" name="list2" indexId="numberfirst">
<bean:write name="numberfirst"/>
<logic:iterate id="second" name="first">
<bean:write name="second"/>
</logic:iterate>
<br>
</logic:iterate>


运行效果:

0 red green blue    

1 中国 美国 法国    

2 乔丹 布什 克林顿    

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐