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. 仿OpenStack开发云计算管理软件

    仿OpenStack开发云计算管理软件 使用Python语言开发一套类似OpenStack的云计算管理平台LouCloud,具备基本的用户,服务器,镜像与 虚拟机管理功能,学习IaaS,虚拟化,Lib ...

  2. cmake总结

    无论生活还是工作上,做过的事,需要总结下. 接触cmake,一般都会看一本书 <<cmake 实践>>. 这是cmake的入门书.我就不多说了. 下面说一下我对部分cmake命 ...

  3. codeforces 264D Colorful Stones

    题目 题目来自于rng_58Orz. 算法 讨论某个状态\((x,y)\)是否可达,\(x\)是狐狸到达的石头,\(y\)是猫的. 题解说,如果满足以下条件,那么它就是可到达状态: \(t[0..y] ...

  4. Libgdx环境搭建及介绍

    Libgdx简单介绍: libgdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成.ibgdx兼容大多数微机平台(标准JavaSE实现,能执行在Mac.Linux.Win ...

  5. JAVA多态学习3

    这一节我们来学习抽象类 抽象类–深入讨论 抽象类是java中一个比較重要的类. 1.用abstract关键字来修饰一个类时.这个类就是抽象类. 2.用abstract关键字来修饰一个方法时,这种方法就 ...

  6. Java基础07 包

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经写了一些Java程序.之前的每个Java程序都被保存为一个文件,比如Tes ...

  7. C#_事件

    C#_事件 概述 今天用来演示事件的例子是模拟实现一个文件下载类,在这个类中我将定义一个DownLoad事件,这个事件用来在文件下载的过程中,向订阅这个事件的用户发出消息,而这个消息将用DownLoa ...

  8. linux登录windows服务器

    在公司同时也兼顾了王老师会议网站的任务,我喜欢用linux,而会议网站托管在windows系统上,虽然装了双系统,但我还是比较懒,不喜欢经常切换系统.还好,linux可以实现登录windows服务器. ...

  9. android ble蓝牙开发略解

    Android 蓝牙4.0开发 1.  权限和相关属性 “android:required="true"表示apk只有在具有bluetooth_le属性的系统里运行,这个4.3之前 ...

  10. 【转】有效修改max open files/ulimit -n

    [转]有效修改max open files/ulimit -n_追梦20121222_新浪博客     [转]有效修改max open files/ulimit -n    (2011-11-18 0 ...