使用struts中的<logic:iterate>标记,可以完成一些复杂的循环。
下面用了一个小例子说明这一点:
iteratebean.java:
package beantest;
import org.apache.struts.action.actionform;
public class iteratebean extends actionform {
private string[] name_coll = null;
public void setname_coll(string[] name_coll) {
this.name_coll = name_coll;
}
public string[] getname_coll() {
return this.name_coll;
}
private string[] name_new = null;
public void setname_new(string[] name_new) {
system.out.println("iteratebean:setname_new(string[])");
this.name_new = name_new;
}
public string[] getname_new() {
return this.name_new;
}
}
iterateaction.java
package beantest;
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 {
public actionforward execute(
actionmapping mapping,
actionform form,
httpservletrequest request,
httpservletresponse response) throws exception {
iteratebean ibean = (iteratebean) form;
string[] temp = {"bitan", "helen"};
ibean.setname_coll(temp);
temp = new string[] {"aaaaa", "bbbbb"};
ibean.setname_new(temp);
return mapping.findforward("iterate-view");
}
}
iterate-view.jsp:
<%@ page contenttype="text/html;charset=gb2312" %>
<%@ taglib uri="/web-inf/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/web-inf/struts-bean.tld" prefix="bean" %>
<logic:iterate id="iterate" name="ibean" property="name_coll" scope="request" offset="0" >
<logic:iterate id="iterate_new" name="ibean" property="name_new" scope="request" offset="0" >
name: <font color=red><%=iterate%></font> ; code: <font color=red><%=iterate_new%></font><br>
</logic:iterate>
★〓〓〓〓〓〓〓〓★<br>
<bean:include id="lower" page="/test/lower.jsp" />
<bean:write name="lower" filter="false"/><br>
</logic:iterate>
lower.jsp:
<font color=blue>hello, iterate!</font>
struts-config.xml:
<?xml version="1.0" encoding="iso-8859-1"?>
<!doctype struts-config public
"-//apache software foundation//dtd struts configuration 1.1//en"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<form-beans>
<form-bean type="beantest.iteratebean" name="ibean" />
</form-beans>
<action-mappings>
<action path="/iterate-test" type="beantest.iterateaction" name="ibean" scope="request" >
<forward path="/test/iterate-view.jsp" name="iterate-view" />
</action>
</action-mappings>
</struts-config>
web.xml:
<?xml version="1.0" ?>
<!doctype web-app public "-//sun microsystems, inc.//dtd web application 2.3//en" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.actionservlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/web-inf/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/eye/*</url-pattern>
</servlet-mapping>
</web-app>
输出效果:
name: bitan ; code: aaaaa
name: bitan ; code: bbbbb
★〓〓〓〓〓〓〓〓★
hello, iterate!
name: helen ; code: aaaaa
name: helen ; code: bbbbb
★〓〓〓〓〓〓〓〓★
hello, iterate!
如上所示,一个循环中不能直接将多个变量同时输出;但在循环中嵌套循环可以实现一种复杂效果。
要实现在一个循环中将多个变量同时输出,可以引用<bean:include>、<bean:write>标记。
闽公网安备 35060202000074号