Struts2 ognl <s:sort ../>标签详解

jopen 10年前

先看最后目录结构:

Struts2 ognl <s:sort ../>标签详解

给出源码:

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"。

sort标签官网释义:

Struts2 ognl <s: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