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. java设计模式之——适配器模式

    适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极.阴极 ...

  2. maven常见问题汇总

    package阶段得到的是build目录下编译后的类包(jar),install是把这个包和一些maven的元信息(比如pom.xml)复制到本地仓库,assembly一般是把build结果和一些资源 ...

  3. webwervice发布时出错 java.security.PrivilegedActionException

    错误信息: 信息: Dynamically creating response wrapper bean Class com.potevio.ws.jaxws.DealReqResponse Exce ...

  4. 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)

    我们来看一个灰度图像,让表示灰度出现的次数,这样图像中灰度为 的像素的出现概率是  是图像中全部的灰度数, 是图像中全部的像素数,  实际上是图像的直方图,归一化到 . 把  作为相应于  的累计概率 ...

  5. C语言,题目:函数调用,内存,malloc找错

    malloc int* p = (int *) malloc (sizeof(int)*128); //分配128个(可根据实际需要替换该数值)整型存储单元,并将这128个连续的整型存储单元的首地址存 ...

  6. 解决外网与内网或内网之间的通信,NAT穿透

    在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行.问题就在于NAT.首先介绍下NAT. NAT的作用NAT(Network Address Translato ...

  7. 安装windows7导致Ubuntu启动项消失的问题的解决

    系统原来是Ubuntu14,前两天安装win7后,启动直接是win7.也就是Ubuntu的启动项消失了. 在windows下尝试非常多方法,都以失败告终,最后选择Ubuntu下boot-repair软 ...

  8. XML 关键字

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

  9. 基于visual Studio2013解决面试题之0602全排列

     题目

  10. grails一对一关联关系

    一对一关联关系开发中用的没有一对多那么广泛.可是我认为掌握以下还是有必要的.一对一关联关系有一张表存在外键,引用的通常是主表的主键.grails也对一对一关联关系提供了非常好的支持.配置也是简单的不得 ...