struts2学习笔记之十一:struts2的类型转换器

Struts2的类型转换器
如何实现Struts2的类型转换器?
* 继承StrutsTypeConverter
* 覆盖convertFromString和convertToString
注册类型转换器
* 局部类型转换器,局部类型转换器只对当前Action起作用,需要提供如下配置文件:
MyActionName-conversion.properties,MyActionName指需要使用转换器的Action名称
”-conversion.properties“固定字符串,不能修改。我们AddUserAction类型转换器的配置
文件名称为:AddUserAction-conversion.properties,该配置文件必须和Action放到同一个
目录中,该配置文件的格式为:Action中的属性名称=转换器的完整路径,如:
birthday=com.bjpowernode.struts2.UtilDateConverter
* 全局类型转换器,全局类型转换器可以是所有的Action起作用(同Struts1的类型转换器),
需要提供如下配置文件:xwork--conversion.properties,该配置文件需要放到src下,该
配置文件的格式:需要转换的类型完整路径=转换器的完整路径,如:
java.util.Date=com.bjpowernode.struts2.UtilDateConverter
如果全局类型转换器和局部类型转换器同时存在,局部优先
Struts2的标签库就一个,默认以s开头
采用标签读取属性,可以调用转换器的convertToString方法,采用JSTL不会调用
struts2在填充属性时有内置的类型转换器,但是不是所有的类型struts2都做了类型转换
当使用该日期格式时,struts2不能进行自动类型转换
书写类型转换器类
DateConverter.java
package com.djoker.struts2;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;import org.apache.struts2.util.StrutsTypeConverter;public class DateConverter extends StrutsTypeConverter{private static final String pattern = "yyyy/MM/dd";@Overridepublic Object convertFromString(Map context, String[] values, Class toClass) {String dateStr = values[0];Date date = null;try {date = new SimpleDateFormat(pattern).parse(dateStr);} catch (ParseException e) {e.printStackTrace();}return date;}@Overridepublic String convertToString(Map context, Object o) {Date date = (Date)o;String dateStr = new SimpleDateFormat("yyyy年MM月dd日").format(date);return dateStr;}}

 

添加类型转换器的配置文件UserAction-conversion.properties(局部类型转换器)
createDate=com.djoker.struts2.DateConverter
Action类UserAction.java
package com.djoker.struts2;import java.util.Date;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.Action;public class UserAction {private String username;private String password;private Date createDate;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Date getCreateDate() {return createDate;}public void setCreateDate(Date createDate) {this.createDate = createDate;}public String addUser() throws Exception {ServletActionContext.getRequest().setAttribute("username", username);ServletActionContext.getRequest().setAttribute("password", password);ServletActionContext.getRequest().setAttribute("createDate", createDate);return Action.SUCCESS;}
}

 

成功页面success.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"pageEncoding="GB18030"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<h1>登录成功</h1>
${msg }<br>
${username }<br>
${password }<br>
${createDate }<br>
<s:property value="createDate"/>
</body>
</html>

 

最终演示效果

转载于:https://www.cnblogs.com/djoker/p/6219063.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Pytorch神经网络基础理论篇】 01 从零开始介绍深度学习算法和代码实现

同学你好&#xff01;本文章于2021年末编写&#xff0c;已与实际存在较大的偏差&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)…

不让系统进休眠(调试时有时会用到)

关于android的锁机制&#xff0c;可以查看&#xff1a;http://blog.csdn.net/sfrysh/article/details/6608118 不让android进入休眠可以在kernel里加上三行代码。一直保管着这个锁。系统就不会进入休眠。如下&#xff1a; static struct wake_lock wqf_charge_display_lock; /…

【Pytorch神经网络基础理论篇】 02 pytorch环境的安装

同学你好&#xff01;本文章于2021年末编写&#xff0c;已与实际存在较大的偏差&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)…

JavaScript (If...Else和Switch和循环遍历) 语句以及常用消息框

If...Else 语句 JavaScript中if...else语句和Java中的语法和使用方法是一样的。 只是在JavaScript中要使用小写字母。使用大写的 IF 会出错&#xff01; 至于if...else...else if...和Java中的都是一样的。 例&#xff1a; var d new Date() var time d.getHours()if (time&l…

numpy中两个array数值比较,在IDE中显示完全相同,但是bool判断两个array是否相等却返回False

numpy踩坑&#xff1a;两个array中数值分别比较&#xff0c;在IDE显示相同&#xff0c;但是bool判断两个array是否相等值却是False 在numpy数据比较时&#xff0c;在IDE显示完全相同但是比较是否相等却有时候返回False&#xff1f; 原因出在了精度显示上面&#xff0c;在代码开…

C两个小例子(数组与指针)

大端模式 所谓的大端模式&#xff0c;是指数据的高位&#xff0c;保存在内存的低地址中&#xff0c;而数据的低位&#xff0c;保存在内存的高地址中&#xff0c;这样的存储模式有点儿类似于把数据当作字符串顺序处理&#xff1a;地址由小向大增加&#xff0c;而数据从高位往低位…

智慧交通day03-车道线检测实现03:相机校正和图像校正的实现

1.相机标定 根据张正友校正算法&#xff0c;利用棋盘格数据校正对车载相机进行校正&#xff0c;计算其内参矩阵&#xff0c;外参矩阵和畸变系数。 标定的流程是&#xff1a; 准备棋盘格数据&#xff0c;即用于标定的图片对每一张图片提取角点信息在棋盘上绘制提取到的角点&a…

win10编辑js文件报错,错误','

在filezilla中编辑js文件报错&#xff0c;在本地可以使用文本编辑&#xff0c;但需重新上传覆盖&#xff0c;很不方便 在win10默认应用中修改为文本编辑即可&#xff0c;在FTP编辑&#xff1a; 直接可以打开编辑

智慧交通day03-车道线检测实现04:车道线提取原理+代码实现+效果图

我们基于图像的梯度和颜色特征&#xff0c;定位车道线的位置。 在这里选用Sobel边缘提取算法&#xff0c;Sobel相比于Canny的优秀之处在于&#xff0c;它可以选择横向或纵向的边缘进行提取。从车道的拍摄图像可以看出&#xff0c;我们关心的正是车道线在横向上的边缘突变。Ope…

linux下的shell编程

下面是一个最简单的shell: 例5&#xff1a;输入参数 $#是指参数个数、$是所有输入的参数 #! /bin/sh echo "$# parameters"; echo "$";wqfwqf-System-Product-Name:/worksen/linuxshell$ ./echo.sh ad 1 parameters ad新建一个shell. gedit echo.sh 输入以…

C#通过修改注册表改变IE默认选项

修改注册表&#xff0c;这个代码好实现&#xff0c;关键是怎么找到对应的注册表值&#xff0c;也就是说画一条线很容易&#xff0c;难的是找到要在哪里画&#xff0c;然后我百度了一圈&#xff0c;出来的都是画线的&#xff0c;没有指出或者指出的不全的注册表对应值&#xff0…

宝塔+wordpress搭建/迁移网站

使用宝塔linux和阿里云ECS搭建网站/从百度云服务器迁移网站到阿里云ECS 为服务器安装宝塔软件 示例&#xff1a; ECS:Ubuntu 18.04 打开阿里云控制台&#xff0c;进入已绑定的实例页面&#xff0c;使用workbench或者VNC&#xff08;推荐使用workbench&#xff0c;workbench可…

智慧交通day03-车道线检测实现05:透视变换+代码实现

为了方便后续的直方图滑窗对车道线进行准确的定位&#xff0c;我们在这里利用透视变换将图像转换成俯视图&#xff0c;也可将俯视图恢复成原有的图像&#xff0c;代码如下&#xff1a; 计算透视变换所需的参数矩阵&#xff1a; def cal_perspective_params(img, points):offs…

LOCAL_MODULE_TAGS 选项说明(android编译选项选择)

LOCAL_MODULE_TAGS &#xff1a;user eng tests optional user: 指该模块只在user版本下才编译 eng: 指该模块只在eng版本下才编译 tests: 指该模块只在tests版本下才编译 optional:指该模块在所有版本下都编译 eng This is the default flavor. A plain "make" is t…

李宏毅老师ML_HW1——PM2.5预测

处理数据之前的pre-process 观察下载的数据文件train.csv train.csv只有每个月前20天的数据&#xff0c;另外每个月剩下10天数据用于作业结果评估&#xff0c;对学生不可见 观察数据发现rainfall栏有很多NR表示没有降雨&#xff0c;但是我们只需要数字&#xff0c;因此可以使用…

“员工请假”流程及在线表单开发示例

1. “员工请假”流程及在线表单开发示例 1.1. 描述 通过本示例达到快速对F2流程管理平台的在线表单速讯上手及零编码式的开发。实现一个以请假为示例的流程及在线表单&#xff0c;及请假数据的查询。 1.2. 目标效果 &#xff08;1&#xff09; 如何配置一个“请假在线表单” &a…

【Pytorch神经网络基础理论篇】 03 数据操作 + 数据预处理

同学你好&#xff01;本文章于2021年末编写&#xff0c;已与实际存在较大的偏差&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)…

git版本控制系统常用指令,Xmind笔记整理

git仓库使用、项目版本管理基本常用指令 纯手工整理Xmind笔记&#xff1a; 点我下载 预览图&#xff1a; Png&#xff1a; 如有错误&#xff0c;谢谢指出

Spark学习(一) -- Spark安装及简介

标签&#xff08;空格分隔&#xff09;&#xff1a; Spark 学习中的知识点&#xff1a;函数式编程、泛型编程、面向对象、并行编程。 任何工具的产生都会涉及这几个问题&#xff1a; 现实问题是什么&#xff1f;理论模型的提出。工程实现。思考&#xff1a; 数据规模达到一台机…

ValueError:only one element tensors can be converted to Python scalars

缘由是&#xff1a;要转换的list里面的元素包含多维的tensor。c