1.s:subset标签概述:

s:subset标签功能是从一个集合中取出部分元素合并成一个新的集合,新生成的这个集合是原来集合的子集。属性和意义如下:

属性名 是否必需 默认值 类型 说明介绍

count

false

——

Integer

获得原始集合中元素的个数

decider

false

——

org.apache.struts2.util.SubsetIteratorFilter.Decider

过滤的条件

source

false

——

String

源集合数据

start

false

——

String

从哪个位置开始,从索引0开始

var

false

——

String

新的集合存储在page上下文的名称

在action中对List集合对象进行数据填充

下面通过实例演示从一个List取出部分元素

新建action类ShowSubSetList,代码如下:

package controller;

import java.util.ArrayList;

import bean.BBS;

public class ShowSubSetList {

	private ArrayList listBBS = new ArrayList();

	public ArrayList getListBBS() {
return listBBS;
} public void setListBBS(ArrayList listBBS) {
this.listBBS = listBBS;
} public String execute()
{
BBS BBSRef1 = new BBS(); BBSRef1.setAuthor("niujiabin");
BBSRef1.setTitle("hello1"); BBS BBSRef2 = new BBS(); BBSRef2.setAuthor("Maybe");
BBSRef2.setTitle("hello2"); BBS BBSRef3 = new BBS(); BBSRef3.setAuthor("GossipGo");
BBSRef3.setTitle("hello3");
listBBS.add(BBSRef1);
   listBBS.add(BBSRef2);
   listBBS.add(BBSRef3);
return "showsubsetlist"; } }

新建填充集合的实体类:

package bean;

public class BBS {

	private String title;
private String author;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
} }

对象集合去取子集:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<s:submit source = "listBBS" var="newSubList" count="2" start="0">
<s:iterator var="BBSBean" value="#attr.newSubList">
<s:property value="#BBSBean.author"/>
</s:iterator> </s:submit>
</body>
</html>

在上一节开始说过,OGNL中的#号可以取出Context中存放的对象,这里我们们看到了一个attr,它的作用是按pageContext》request》session》application顺序访问其属性,本例的#attr.newSubList相当于按顺序从三个范围读取newSubList属性直到找到为止。我们可以使用session的setAttribute()等方法设定一个进程可以共享的属性对象,使用session设定的属性在同一个进程中可以共享,除了session之外,还有pageContext、request、application也都可以使用setAttribute()之类的方法(详请查阅API文件)来设定可以共享的属性对象,只不过这四个对象所设定的属性其共享范围各不相同。
使用pageContext所设定的属性对象,其共享范围限于同一个JSP页面,使用request所设定的属性对象,其在同一个request处理期间可以共享(包括forward给其它JSP页面),session对象所设定的属性对象则限于同一个进程作用期间可以共享,而application对象所设定的属性,则在整个Web应用程序中的JSP页面都可以共享。

配置文件struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtd/struts-2.0.dtd">
<struts>
<package name="Maybe" extends="struts-default"> <action name="showsubsetlist" class="controller.ShowSubSetList">
<result name="showsubsetlist">/showsubsetlist.jsp</result>
</action>
</package> </struts>

运行结果:

2.按集合中的个人中进行排顺序

s:sort标签概述:

属性名 是否必需 默认值 类型 说明介绍
comparator true —— java.util.Comparator 排序器实例
source false —— String 要排序的集合
var false —— String 排序后的集合,放到page上下文中

在action中创建并填充要排序的List集合对象:

package bean;

public class UserInfo {

	private String name;
private int weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
} }

创建List集合对象中的实体类:

package controller;

import java.util.ArrayList;

import bean.UserInfo;

public class ShowSortList {

	private ArrayList listUserInfo = new ArrayList();

	public ArrayList getListUserInfo() {
return listUserInfo;
} public void setListUserInfo(ArrayList listUserInfo) {
this.listUserInfo = listUserInfo;
} public String execute()
{
UserInfo User1 = new UserInfo();
User1.setName("niujiabin");
User1.setWeight(12); UserInfo User2 = new UserInfo();
User2.setName("maybe");
User2.setWeight(13); UserInfo User3 = new UserInfo();
User3.setName("gossip");
User3.setWeight(14); listUserInfo.add(User3);
listUserInfo.add(User2);
listUserInfo.add(User1); return "showsortlist";
}
}

创建排序策略实现Comparator接口的工具类:

package sort;

import java.util.Comparator;

import bean.UserInfo;

public class SortWeight implements Comparator {

	@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
if(((UserInfo)o1).getWeight()>((UserInfo)o2).getWeight())
return 1;
else
return -1;
} }

对集合对象List进行排序:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <body>
<s:bean name="sort.SortWeight" var="sortRef"></s:bean> <s:sort comparator="#sortRef" source="listUserInfo" var ="newlistUserInfo">
<s:iterator value="#attr.newlistUserInfo" var="userInfoRef">
name:<s:property value="#userInfoRef.name"/>
weight:<s:property value="#userInfoRef.weight"/>
</s:iterator> </s:sort>
</body>
</html>

这里用到了struts2中的bean标签,非常简单,这里不再赘述。如果大家还没明白#的使用,可以简单地理解为,对于在action中的属性(set和get方法),我们不需要使用#,相反,对于不在action中的属性(没有set和get方法)对其取值时必须加#,之后在考虑其所在范围,是pageContext,request,session,application中的哪一个,attr比较万能的方法,希望大家灵活运用。

struts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtd/struts-2.0.dtd">
<struts>
<package name="Maybe" extends="struts-default"> <action name="showsortlist" class="controller.ShowSortList">
<result name="showsortlist">/showsortlist.jsp</result>
</action>
</package>
</struts>

运行结果:

小结:熟练掌握#的运用非常重要。

java web从零单排第十六期《struts2》控制标签(2)的更多相关文章

  1. java web从零单排第二十一期《Hibernate》主键的生成方式,用户增加与显示用户列表

    1.新建register.jsp <%@ page language="java" import="java.util.*" pageEncoding=& ...

  2. java web从零单排第二十二期《hibernate》代码分析之查看,删除用户信息

    前两期的内容不知道大家理解的怎么样,我并没有详细的去解释代码的意思,如果你已经自己都钻研明白了,那最好过,但还是一知半解的话,接下来我会仔细分析代码. 1.register.jsp:这部分代码只是简单 ...

  3. (十六)Struts2的标签库

    一.简介 Struts2的标签库使用OGNL为基础,大大简化了数据的输出,也提供了大量标签来生成页面效果,功能非常强大. 在早期的web应用开发中,jsp页面主要使用jsp脚本来控制输出.jsp页面嵌 ...

  4. java web从零单排第十七期《struts2》数据标签库(1)

    1.s:action标签: 此标签的作用是在JSP页面中访问action类的数据,执行某些操作,并返回相应的数据.其属性及意义如下: 属性名 是否必需 默认值 类型 说明介绍 executeResul ...

  5. Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击

    Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击 文/玄魂 目录 Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击................... ...

  6. 风炫安全web安全学习第三十六节课-15种上传漏洞讲解(一)

    风炫安全web安全学习第三十六节课 15种上传漏洞讲解(一) 文件上传漏洞 0x01 漏洞描述和原理 文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把 ...

  7. 二十六:Struts2 和 spring整合

    二十六:Struts2 和 spring整合 将项目名称为day29_02_struts2Spring下的scr目录下的Struts.xml文件拷贝到新项目的scr目录下 在新项目的WebRoot-- ...

  8. PYG5.4第十六期第一轮基础六题

    1. HYWZ-dts音效大师破解https://www.chinapyg.com/thread-135090-1-1.html(出处: 飘云阁(PYG官方论坛) ) 2. HYWZ-LopeEdit ...

  9. 【Java Saves!】Session 6:十六指星人

    前面说,计算机用2个手指头数数,它内部的数是二进制,有0和1两个数字.也看到,对于人来说,二进制数too long, too inconvenient, sometimes troublesome.程 ...

随机推荐

  1. Android--开发过程中使用到的长度单位

    px:表示屏幕实际的像素. in:表示英寸. mm:毫米. pt:表示一个点,是屏幕的物理尺寸. dp:(与密度无关的像素)逻辑长度单位,在160dpi屏幕上,1dp = 1px = 1/160英寸 ...

  2. 开源OCR光学字符识别

    纸张在 许多地方已日益失宠,无纸化办公谈论40多年,办公环境正限制纸山的生成.而过去几年,无纸化办公的概念发生了显着的转变.在计算机软件的帮助 下,包含大量重要管理数据和资讯的文档可以更方便的以电子形 ...

  3. 基于visual Studio2013解决面试题之1105字符串压缩

     题目

  4. Javascript 调试利器 Firebug使用详解

    Javascript 调试利器 Firebug使用详解 有时候,为了更清楚方便的查看输出信息,我们可能需要将一些调试信息进行分组输出,那么可以使用console.group来对信息进行分组,在组信息输 ...

  5. 生成awr报告

    主要参考文献: http://343766868.blog.163.com/blog/static/48314056201110124513396/ 概况 Oracle内部以一定的频率把系统关键的统计 ...

  6. Android异步载入全解析之使用多线程

    异步载入之使用多线程 初次尝试 异步.异步,事实上说白了就是多任务处理.也就是多线程执行.多线程那就会有各种问题,我们一步步来看.首先.我们创建一个class--ImageLoaderWithoutC ...

  7. PHP学习之-1.4 计算表达式

    计算表达式 不同于HTML和CSS,在PHP中做计算,比如我们写 echo 12*3 计算结果是36.代码如下 <?php echo 12*3;?> 实例 <!DOCTYPE HTM ...

  8. XML 关键字

    SGML--Standard Generalized Marked Language 标准通用标记语言GML--Generalized Marked Language 通用标记语言XML--Extes ...

  9. 基于visual Studio2013解决C语言竞赛题之1075大数阶乘

        题目 解决代码及点评 /************************************************************************/ /* ...

  10. 管理支撑办公系统技术架构选型对照讨论(J2EE与SOA对照)

    续:管理支撑办公系统技术架构选型及相关技术应用范围.方法分析 M域办公系统改造.整合涉及到OA.业务流程.部室信息站点.部室专业管理等系统和信息共享等新需求,从信息化视角来看,内容多并且杂,这里核心业 ...