示例如下:
(1)Action文件
public class IterateTestAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Group group=new Group();
group.setName("中国");
List userList=new ArrayList();
for(int i=0;i<10;i++){
User user=new User();
user.setName("user_"+i);
user.setAge(20+i);
user.setGroup(group);
userList.add(user);
}
request.setAttribute("userlist", userList);
return mapping.findForward("success");
}
}
(2)struts-config.xml配置如下代码
<action path="/iterate"
type="edu.tjpu.struts.IterateTestAction"
>
<forward name="success" path="/iterate.jsp"></forward>
</action>
(3)iterate.jsp文件如下
方法一:使用jsp脚本获取所得元素
其中的代码如下:
<table border=2>
<tr>
<td>姓名</td>
<td>年龄</td>
<td>组别</td>
</tr>
<%
List userList=(List)request.getAttribute("userlist");
if(userList==null||userList.size()==0){
%>
<tr>
<td colspan="3">没有符合条件的记录</td>
</tr>
<%
}else{
for(Iterator iter=userList.iterator();iter.hasNext();){
User user=(User)iter.next();
%>
<tr>
<td><%=user.getName() %></td>
<td><%=user.getAge() %></td>
<td><%=user.getGroup().getName() %></td>
</tr>
<%
}
}
%>
</table>
方法二:使用struts标签之---iterate,代码如下:
首先引入如下:
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
其次如下取值代码:
<table border=2>
<tr>
<td>姓名</td>
<td>年龄</td>
<td>组别</td>
</tr>
<logic:empty name="userlist">
<tr>
<td colspan="3">没有符合条件的记录</td>
</tr>
</logic:empty>
<logic:notEmpty name="userlist">
<logic:iterate id="us" name="userlist">
<tr>
<td>
<bean:write name="us" property="name"/>
</td>
<td>
<bean:write name="us" property="age"/>
</td>
<td>
<bean:write name="us" property="group.name"/>
</td>
</tr>
</logic:iterate>
</logic:notEmpty>
</table>
即首先通过<logic:empty>判断userlist有没有值,若没有,则执行“没有符合条件的记录”;
然后通过标签<logic:notEmpty>判断userlist如果不为空,则通过迭代标签<logic:iterate>取值;
iterate的那么属性是从scope="requet“中取得的,其中的属性id可取任何值,相当于User的对象,我们这里取值为us,然后通过标签<bean:write>输出。