struts2之标签库使用--merge

merge:混合,融入;跟append一样,都是用来拼接集合的,两者不一样的是,拼接后,新集合的元素排序不同。

假设有3个集合:

第一个:{'one','two','three'}

第二个:{'four,'five','six'}

第三个:{'seven','eight','nine'}

1.append实例解析

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <%-- <base href="<%=basePath%>"> --%>
    <title>struts2标签之append</title>
  </head>
  <body>
  	<!-- append实例 -->
  	<s:append id="newList">
  		<s:param value="{'one','two','three'}"/>
  		<s:param value="{'four','five','six'}"/>
  		<s:param value="{'seven','eight','nine'}"/>
  	</s:append>
  	<!-- iterator迭代输出 -->
  	<s:iterator value="#newList" status="st">
  		<s:property/><br>
  	</s:iterator>
  </body>
</html>

输出结果:


根据输出结果,很明显看出集合元素顺序逻辑如下:

第一个集合中第一个元素

第一个集合中第二个元素

第一个集合中第三个元素

第二个集合中第一个元素

第二个集合中第二个元素

第二个集合中第三个元素

第三个集合中第一个元素

第三个集合中第二个元素

第三个集合中第三个元素


2.merge实例解析

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <%-- <base href="<%=basePath%>"> --%>
    <title>struts2标签之merge</title>
  </head>
  <body>
  	<!-- merge实例 -->
  	<s:merge id="newList">
  		<s:param value="{'one','two','three'}"/>
  		<s:param value="{'four','five','six'}"/>
  		<s:param value="{'seven','eight','nine'}"/>
  	</s:merge>
  	<!-- iterator迭代输出 -->
  	<s:iterator value="#newList" status="st">
  		<s:property/><br>
  	</s:iterator>
  </body>
</html>

输出结果:

one

four

seven

two

five

eight

three

six

nine

结合元素逻辑分析:

先看struts2的document解释:

Example if there are 3 lists being merged, each list have 3 entries, the following willbe the logic.

  1. Display first element of the first list
  2. Display first element of the second list
  3. Display first element of the third list
  4. Display second element of the first list
  5. Display second element of the second list
  6. Display second element of the third list
  7. Display third element of the first list
  8. Display thrid element of the second list
  9. Display third element of the thrid list
翻译成中文就是输出元素逻辑:

第一个集合中第一个元素

第二个集合中第一个元素

第三个集合中第一个元素

第一个集合中第二个元素

第二个集合中第二个元素

第三个集合中第二个元素

第一个集合中第三个元素

第二个集合中第三个元素

第三个集合中第三个元素

其实就是从第一集合开始,先取第一个集合第一个元素放在新集合中做为第一个,再去第二个集合中取第一个元素作为新集合第二个元素,一次类推,知道按这样的顺序将所有参加的集合取完。

到这个地方会有个疑问产生,如果每个集合长短不一样怎么办?

看这个例子就明白了!

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <%-- <base href="<%=basePath%>"> --%>
    <title>struts2标签之merge</title>
  </head>
  <body>
  	<!-- merge实例 -->
  	<s:merge id="newList">
  		<s:param value="{'one','two','three','ten'}"/>
  		<s:param value="{'four','five','six'}"/>
  		<s:param value="{'seven','eight','nine','eleven'}"/>
  	</s:merge>
  	<!-- iterator迭代输出 -->
  	<s:iterator value="#newList" status="st">
  		<s:property/><br>
  	</s:iterator>
  </body>
</html>

输出结果:

one
four
seven
two
five
eight
three
six
nine
ten
eleven

如上,第一个集合取到第四个元素ten的时候,第二个集合没有第四个元素,没有取到就没有呗,没有就混过去,然后去取第三个集合的eleven。

这个时候还有疑问,如果第一个集合中的ten没有,而第三个集合中的eleven存在,咱拼接啊!让事实证明一切!

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <%-- <base href="<%=basePath%>"> --%>
    <title>struts2标签之merge</title>
  </head>
  <body>
  	<!-- merge实例 -->
  	<s:merge id="newList">
  		<s:param value="{'one','two','three'}"/>
  		<s:param value="{'four','five','six'}"/>
  		<s:param value="{'seven','eight','nine','eleven'}"/>
  	</s:merge>
  	<!-- iterator迭代输出 -->
  	<s:iterator value="#newList" status="st">
  		<s:property/><br>
  	</s:iterator>
  </body>
</html>

结果:

one
four
seven
two
five
eight
three
six
nine
eleven

结合上面实例,一句话总结,按顺序,见者有份,不会把谁丢掉的!只有发现大家都拼接到了,才算结束!



你可能感兴趣的:(struts2,iterator,property,append,merge)