在这里要注意的问题:set方法可以在八大基本数据之间相互转化,其他类型的数据不能进行转化,但同样可以直接传递
java代码:
package cn.csdn.class3g.web.tag;
import java.io.IOException;
import java.util.Arrays;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class TagArray extends SimpleTagSupport {
/*set方法可以在八大基本数据之间相互转化,其他类型的数据不能进行转化,但同样可以直接传递*/
private String var;
private int[] items;
public void setVar(String var) {
this.var = var;
}
public void setItems(int[] items) {
this.items = items;
}
public void doTag() throws JspException, IOException {
//数组的排序
Arrays.sort(items);
/*遍历数组并输出*/
for(int i=0;i<items.length;i++){
//将数组值传给var属性
var = ""+items[i];
this.getJspContext().setAttribute("arr",var);
//输出
this.getJspBody().invoke(null);
}
}
}
Arrays.sort(items);的解释:
J2eeAPI中Array中的sort(byte[] a)方法
public static void sort(byte[] a)
对指定的 byte 型数组按数字升序进行排序。该排序算法是一个经过调优的快速排序法,改编自 Jon L. Bentley 和 M. Douglas McIlroy 合著的 Engineering a Sort Function", Software-Practice and ExperienceVol. 23(11) P. 1249-1265 (November 1993)。此算法在许多数据集上提供n*log(n) 性能,这导致其他快速排序会降低二次型性能。
参数:
a - 要排序的数组
jsp文件的部分代码:
<!-- 将数组值直接传入属性中 -->
<%
int arr[] = {100,40,39,86,54};
request.setAttribute("arr",arr);
%>
<!-- 获取属性值 -->
<tag:tag var="arrry"items="${arr}">
${arr}
</tag:tag>
tld文件的部分代码:
<description>there are custom tags of tag</description>
<tlib-version>1.0</tlib-version>
<short-name>tag</short-name>
<uri>http://cn.csdn.web.tag</uri>
<tag>
<description>if else demo</description>
<name>tag</name>
<tag-class>cn.csdn.class3g.web.tag.TagArray</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>var</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>items</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
要注意的问题:
jsp文件中务必要导入标签描述文件:
<%@ taglib uri="http://cn.csdn.web.tag" prefix="tag"%>