Struts2 ognl <s:sort ../>标签详解
jopen
11年前
先看最后目录结构:
给出源码:
sortTag.jsp:
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <body> <s:set name="frank" value="{'aefi','abc','world!','kkkkk'}" /> <s:bean id="sort" name="action.SortComparator"></s:bean> <s:sort source="frank" comparator="sort"> <s:iterator> <tr><td> <s:property /> </td></tr> </s:iterator> </s:sort> </body> </html>
解析:
<s:bean id="sort" name="action.SortComparator"></s:bean>即,关联相关的java类文件(此为比较器类SortComparator)。其中id属性可看作就是SortComparator的一个实例。若不加入bean标签,则出现异常:javax.servlet.jsp.JspException: comparator [null] does not implements Comparator interface由下面的"sort标签官网释义",可知:sort标签中的comparator属性=比较器实例=bean的id属性值="sort"。
SortComparator.java:
package action; import java.util.Comparator; public class SortComparator implements Comparator<Object> { public int compare(Object arg0, Object arg1) { return arg0.toString().compareTo(arg1.toString()); } }
在struts.xml中不用给出任何相关配置:
<?xml version="1.0" encoding="gb2312"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.i18n.encoding" value="gb2312"/> <package name="OGNLTAG" extends="struts-default"> </package> </struts>
运行 http://localhost:8080/OGNLTAG/jsp/sortTag.jsp 结果:(按字符串长度排序)
abc aefi kkkkk world!
来自:http://blog.csdn.net/itzyjr/article/details/8425338