Struts logic:iterate
不想写Java中的for循环?还想用标签进行数据迭代?让Struts中的login:iterate标签来帮你吧!这里有一个简单的实例,你是否能够学会呢?
首先我们创建一个IterateAction,在execute方法中存入一组数据,然后放在request中,最后使用mapping.findForward进行跳转。
package cn.ineeke.struts;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class IterateAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
List userList = new ArrayList();
for(int i=0;i<10;i++){
User user = new User();
user.setUid(i);
user.setUserName("neeke"+i);
user.setPassword("neeke"+i);
userList.add(user);
}
request.setAttribute("userList", userList);
return mapping.findForward("success");
}
}
Struts-config.xml是这样配置的:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans /> <global-exceptions /> <global-forwards /> <action-mappings> <action path="/iterate" type="cn.ineeke.struts.IterateAction"> <forward name="success" path="/iterate.jsp"></forward> </action> </action-mappings> <message-resources parameter="cn.ineeke.struts.ApplicationResources" /> </struts-config>
上面只是为了为我们提供一组数据,当然你也可以使用其他方式。接下来才是重点了。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic"%> <%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>logic iterate学习</title> </head> <body> <form action="iterate.do" method="post"> <input type="submit" value="测试iterate"> </form> <logic:empty name="userList" scope="request"> 没有符合条件的数据 </logic:empty> <logic:notEmpty name="userList" scope="request"> <table border="1"> <logic:iterate id="user" name="userList"> <tr> <td><bean:write name="user" property="uid" /></td> <td><bean:write name="user" property="userName" /></td> <td><bean:write name="user" property="password" /></td> </tr> </logic:iterate> </table> </logic:notEmpty> </body> </html>
上面的代码我们一一进行一下解说。
<logic:empty>若scope中的userList为空则输出“没有符合条件的数据”。
<logic:notEmpty>上面的你都知道了,这个还用说吗?O(∩_∩)O~
重点<logic:iterate>出现了!其name属性就是使用request.setAttribute("userList", userList)存在request中的userList,id属性代表userList中的每一个user对象,确切的说应该是当前循环到的user对象。
至于<bean:write>嘛,可以先看看[Struts bean:write filter] 一文。这里要说的是其property属性,这里我们要输出的是当前user的某一属性,而不是user这个对象,所以我们需要加上property。类似于<%=user.getUserName()%>。
最后我们再来看看这里用Java代码如何实现。
<%@ page language="java" import="java.util.*,cn.ineeke.struts.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic"%>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>logic iterate学习</title>
</head>
<body>
<form action="iterate.do" method="post">
<input type="submit" value="测试iterate">
</form>
<%
List userList = (List)request.getAttribute("userList");
if(userList == null || userList.size() == 0){
%>
没有符合条件的数据
<%
}else{
%>
<table border="1">
<%
for(int i=0;i<userList.size();i++){
User user = (User)userList.get(i);
%>
<tr>
<td><%=user.getUid() %></td><td><%=user.getUserName() %></td><td><%=user.getPassword() %></td>
</tr>
<%
}
%>
</table>
<%
}
%>
</body>
</html>
怎么样?如果我前面那几个标签解释的不太清楚的话,对比之下你应该能够明白了吧?标签是多么的整洁,Java代码方式多么的乱…O(∩_∩)O哈哈~
除非另有声明,本站遵循【署名-非商业性使用-相同方式共享 3.0 共享协议】授权。
转载原创文章请注明,转载自:Neeke[http://www.ineeke.com]
本文链接: http://www.ineeke.com/archives/StrutsLogicIterateBiaoQian/

用jstl标签去实现,会简单很多