Struts2-学习笔记系列(12)-set集合
3.1编写类型转换器 只需实现 converFromString方法
public class UserConvert extends StrutsTypeConverter {
@Override
public Object convertFromString(Map map, String[] strings, Class aClass) {
Set result = new HashSet();
for (int i = 0; i < strings.length; i++) {
User user = new User();
String[] vals = strings[0].split(",");
user.setName(vals[0]);
user.setPwd(vals[1]);
result.add(user);
}
return result;
}
@Override
public String convertToString(Map map, Object o) {
if (o.getClass() == Set.class) {
Set users = (Set) o;
String result = "[";
for (Object obj : users) {
User user = (User) obj;
if (user != null && user.getName() != null) {
result += "<" + user.getName() + "," + user.getPwd() + ">";
}
}
return result + "]";
} else {
return "";
}
}
}
3.2告知struts在转换的时候,使用元素的name作为索引.在域中实现
public class User {
public User() {
}
private String name;
private String pwd;
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
// 表明:action中的set user,使用元素name属性进行区分(set集合不能有重复项)
if (this==obj) {
return true;
}
if (obj != null && obj.getClass() == User.class) {
User user = (User) obj;
return this.getName().equals(user.getName());
}
return false;
}
@Override
public int hashCode() {
return name.hashCode();
}
}
3.3注册转换器
users=convert.UserConvert
#指定action中users集合的索引(key)是name
KeyProperty_users=name
注意: 使用的是 == 而不是 equal
if (this==obj) {
return true;
}
3.4录入数据
<s:form action="login">
<s:textfield name="users" label="第一个用户信息"/>
<s:textfield name="users" label="第二个用户信息"/>
<tr>
<td colspan="2"><s:submit value="转换" theme="simple"/>
<s:reset value="重填" theme="simple"/></td>
</tr>
</s:form>
3.5访问set元素
<s:property value="users"/>
<!-- 访问users集合属性里索引属性值为zcx的元素的name属性-->
用户zcx的用户名为:<s:property value="users('zcx').name"/><br/>
<!-- 访问users集合属性里索引属性值为zjj的元素的name属性-->
zjj:<s:property value="users('zjj').name"/><br/>
Struts2-学习笔记系列(12)-set集合的更多相关文章
- SQLServer学习笔记系列12
一.写在前面的话 这个sql学习系列,今天准备告一段落,虽然短短的十几篇文章,深刻感受到将学习的东西记录下来,是需要一种坚持! 这些东西只有反复的学习吸收,最终沉淀下来的才是属于自己的知识.也是提醒自 ...
- 【Struts2学习笔记(12)】Struts2国际化
(1)准备资源文件,资源文件的命名格式例如以下: baseName_language_country.properties baseName_language.properties baseName. ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- 步步为营 SharePoint 开发学习笔记系列总结
转:http://www.cnblogs.com/springyangwc/archive/2011/08/03/2126763.html 概要 为时20多天的sharepoint开发学习笔记系列终于 ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
- SQLServer学习笔记系列2
一.写在前面的话 继上一次SQLServer学习笔记系列1http://www.cnblogs.com/liupeng61624/p/4354983.html以后,继续学习Sqlserver,一步一步 ...
- .NET CORE学习笔记系列(2)——依赖注入[7]: .NET Core DI框架[服务注册]
原文https://www.cnblogs.com/artech/p/net-core-di-07.html 包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IS ...
- .NET CORE学习笔记系列(2)——依赖注入[6]: .NET Core DI框架[编程体验]
原文https://www.cnblogs.com/artech/p/net-core-di-06.html 毫不夸张地说,整个ASP.NET Core框架是建立在一个依赖注入框架之上的,它在应用启动 ...
- .NET CORE学习笔记系列(2)——依赖注入[5]: 创建一个简易版的DI框架[下篇]
为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在上篇中我们介绍了Cat的基本编程模式,接下来我们就来聊聊Cat的 ...
随机推荐
- 使用 VSCode 在 Mac 上配置 C/C++ 调试环境
Background VSCode是微软开发的一款开源代码编辑器,具有可拓展性强,多语言支持,跨平台等优点,在不同的个性化配置下几乎可以用作所有的轻量级开发.我在初学C的时候也使用的是类似于Xcode ...
- M-Renamer方法名修改器,iOS项目方法名重构,Objective-C/Swift,代码模型预判,减少误改的机率,替换速度更快,可视化操作,傻瓜式操作,一键操作,引用处自动修改,马甲包的福音
M-Renamer M-Renamer(Method-Name-Renamer)类方法名修改器,采用链式解析头文件,代码模型预判,减少误改的机率,替换速度更快:可以解析整个项目大多数类的方法,可视化操 ...
- 如何在win10下使用Ubuntu中的crontab自动执行任务
win10下如何下载ubuntu 1.打开Microsoft Store,搜索ubuntu,选择其一(我选了第一个),点击获取,耐心等待安装即可: 2.安装完成可在开始栏找到: 使用cront ...
- python爬取网站页面时,部分标签无指定属性而报错
在写爬取页面a标签下href属性的时候,有这样一个问题,如果a标签下没有href这个属性则会报错,如下: 百度了有师傅用正则匹配的,方法感觉都不怎么好,查了BeautifulSoup的官方文档,发现一 ...
- 「面试指南」解读JavaScript原始数据类型
JavaScript 有 7 种原始数据类型: String(字符型) Number(数值型) Boolean(布尔值型) Undefined Null Object(对象型) Symbol(符号型, ...
- upload-labs通关集
upload-labs通关集 环境 第一题 前端js检查 第二题 content-type类型绕过 第三题 黑名单绕过 第四题 .htaccess绕过 第五题 大小写绕过 第六题 空格绕过 第七题 点 ...
- java实现小功能
// 自写逻辑,遍历所有匹配的子字符串坐标 private static void forMatchIdx(String str1, String str2) { char[] arr1 = str1 ...
- sql-lib闯关61-65
第六十一关 和六十关基本一样,就是变成了单引号和双括号,这好像是第一次遇见双括号 爆数据库名 ?id=1'))and extractvalue(1, concat(0x5c, (select da ...
- 六、深浅拷贝与while循环
一.深浅拷贝 3.1 浅copy: 浅copy是把原列表第一层的内存地址不加区分完全copy一份给新列表 用法: list1=[ 'egon', 'lxx', [1,2] ] list2=list1. ...
- Redis总结--【持续更新】
# 什么是Redis? Redis 是完全开源免费的,是一个高性能的key-value内存数据库,读的速度是110000次/s,写的速度是81000次/s 它有以下三个特点: Redis不 ...