该SOEL标签维基描述的方式来做到这一点,而无需使用小脚本:使用EL函数来完成排序,然后使用该结果
items在JSTL核心属性
forEach标签。
函数类:
package org.hierax.ifdl.tags.player;public final class PlayerSort { public static List<Player> sortByRank(List<Player> playerList) { Collections.sort(playerList, new PlayerSortByRank()); return playerList; } public static List<Player> sortByAlias(List<Player> playerList) { Collections.sort(playerList, new PlayerSortByAlias()); return playerList; }}TLD:
<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <display-name>Player Functions</display-name> <tlib-version>1.0</tlib-version> <short-name>player</short-name> <uri>org.hierax.ifdl.tags</uri> <function> <name>sortByRank</name> <function-class>org.hierax.ifdl.tags.player.PlayerSort</function-class> <function-signature>java.util.List sortByRank(java.util.List)</function-signature> </function> <function> <name>sortByAlias</name> <function-class>org.hierax.ifdl.tags.player.PlayerSort</function-class> <function-signature>java.util.List sortByAlias(java.util.List)</function-signature> </function></taglib>
菜单JSP:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib prefix="p" uri="/WEB-INF/player.tld" %><h1>Players</h1><p> <c:forEach items="${p:sortByAlias(model.players)}" var="player"> <a href="<c:url value="/player/${player.id}"/>" >${player.alias}</a> </c:forEach></p>


