20NN课程网
扫一扫,放到手机桌面

struts中文手册

Struts sort标签语法与示例

Sort标签用一个定义好的Comparator来对List进行排序,排序后的列表被压入ValueStack中。如果定义了var=keyname,那么将在PageContext中添加一个keyname到排列后元素的映射,即可通过%{#attr.keyname}来获取排列后的列表,更多请看下文示例。

Sort标签属性

IF标签属性
属性名必要属性默认值类型描述
comparatorTRUEjava.util.Comparator一个比较对象,需实现java.util.Comparator接口。
sourceFALSEString被排序的原列表。
varFALSEString如果指定,则会在PageContext里放一排序后列表的映射,可以用%{#attr.varname}获取排序后的列表。
说明:省略奇葩属性performClearTagStateForTagPoolingServers

Sort标签示例

Action代码

public class TestAction extends ActionSupport {
	
	private Comparator<Integer> myComparator;
	private List<Integer> myList;
	
	@Override
	public String execute() throws Exception {
		
		this.myComparator = new Comparator<Integer>() {
			@Override
			public int compare(Integer o1, Integer o2) {
				return o1-o2;//from 0 to n
			}
		};
		
		this.myList = new ArrayList<Integer>(Arrays.asList(new Integer[]{5,1,2,3,4}));
		
		return super.execute();
	}

	public Comparator<Integer> getMyComparator() {
		return myComparator;
	}

	public List<Integer> getMyList() {
		return myList;
	}
	
}

Sort标签不使用var示例

<s:sort comparator="myComparator" source="myList">
     <s:iterator>
    	<s:property/>
     </s:iterator>
</s:sort>

Sort标签应用var & PageContext取值示例

<s:sort var="result" comparator="myComparator" source="myList" ></s:sort>
<s:iterator value="%{#attr.result}">
	<s:property/>
</s:iterator>

输出说明:

1 2 3 4 5

以上两个示例会输出相同的结果,如上图所示,这里大家也学到了PageContext中变量的取值的方法%{#attr.anyname}。同时一定要区分几个概念:PageContext、ActionContext及ValueStack,不得不承认Struts在这方面做得有点乱,不同标签行为有些不一致,写代码时大家做好调试即可。

Sort标签使用心得

以下是我个人的一些看法:Sort标签在Struts早几年的版本里我是没有印象的。对于这个标签,我个人并不喜好,有几点原因:

  1. 功能太单一,仅仅一个简单的排序,连个order属性都没有;
  2. Comparator对象还得在Java代码中实现,为何不在Java代码里多添加一行代码,把目标List的排序也解决了;
  3. 标签做为视图层的特性,用于做一个与视图完全无关的排序是不是超过本身该有的职责,视图层的所有元素应该尽可能的与UI界面相关;
  4. 它会让我的视图层代码变得不优雅,或许还得跟css的专家专门解释:“请不要管这个标签,但你要知道它前后会多一个HTML换行符”;
写一些自己的看法

网站优选

备案:陕ICP备17014144号-5

不良信息举报电话:029-85678878,商务合作短信留言:18291486809,邮箱:yte1@qq.com

『野天鹅』以分享生活智慧为中心,内容包括社保、档案、户籍、学业、商业、理财等,我们希望我们精心编排的内容能为您的日常生活提供真正有效的帮助。

『西安野天鹅网络技术有限公司』