Struts2数据转换
来源:互联网 发布:淘宝11.11抢拍技巧 编辑:程序博客网 时间:2024/04/27 19:26
一:数据转换:
1:把页面上的字符串数据类型装换成数据库中的类型 insert update delete
2:把数据库中的数据类型转换成字符串在页面上显示输出 select
Struts实现自动转换
1:基本数据类型转换。
2:本地格式的日期类型(yyyy-MM-dd)--Date
3:把string[](字符串数组)类型的转换成用“,+空格”间隔的字符串
二:自定义类型转换器
TypeConverter--DefaultTypeConverter---StrutsTypeConverter
定义好的类型转换器需要注册
1:该类型转换器只能被特定的类使用(局部的)
2:该类型转换器可以被全局使用
定义局部的文件需要写在其转换的实体类的包下,文件命名规则Javabean名称-conversion.properties
brithday=converter.MyConverter
定义全局的类型转换器,文件名必须是这个名xwork-conversion-properties文件应该写在src下
这个文件里写
java.util.Date=converter.MyConverter
三:没有自定义类型转换器时的错误处理
(如果没有写类型转化器时,输入格式错误,怎么处理:定义结果视图 input)
会报错"HTTP Status 404-No result defined for action action.UserAction and result input"
input数据回显,即回到原来注册页面,并显示原输入数据
<struts>
<package name="p1" extends="struts-default">
<action name="regist" class="com.qianfeng.web.action.UserAction" method="regist">
<result name="exists" type="redirect">/msg.jsp</result>
<result name="success">/success.jsp</result>
<result name="input">/regist.jsp</result><!-- 数据回显, 回到源来的页面 -->
</action>
</struts>
如何显示数据呢?
首先页面需要添加标签<%@ taglib uri="/struts-tags" prefix="s" %>
在boday里加入<s:fielderror/>标签
<s:fielderror/>加这个标签会在页面上方和错误输入框上边显示错误
如果想只显示输入框上的错误提示写<s:head></s:head>就可以了
<s:head></s:head>这个标签会使错误信息显示为红色
对于页面提交表单
Struts2的表单和form以及HTML的表单写法差不多
action :可以直接写动作
method:默认post
enctype:表单编码为MIME类型
<form action="${pageContext.request.contextPath}/regist.action" method="post"> 用户名:<input type="text" name="username"><br/> 密码:<input type="password" name="password"><br/> 出生日期:<input type="text" name="birthday"><br/> 爱好:<input type="checkbox" name="hobby" value="吃">吃 <input type="checkbox" name="hobby" value="睡">睡 <input type="checkbox" name="hobby" value="玩">玩<br/> 已婚:<input type="checkbox" name="married" value="true"><br/> <input type="submit" value="注册"><br/> </form>
使用Struts2标签后的写法
<s:form action="regist.action"> <s:textfield name="username" label="用户名" requiredLabel="true" requiredPosition="left"></s:textfield> <s:password name="password" label="密码" showPassword="true"></s:password> <s:textfield name="birthday" label="出生日期"></s:textfield> <s:submit value="注册"></s:submit> </s:form>" requiredLabel="true" requiredPosition="left"
修改错误信息显示需要建立User.properties文件
invalid.field value foe field brithday=请输入正确格式“MM/dd/yyyy”
发生类型转换错误时为什么加入input就能实现回显?
拦截器conversionError实现的这个功能
注意:动作类必须继承ActionSupport
四:数据验证
客户端验证,服务器端验证
服务器端验证(d38 MVC)
1编程式验证:写代码验证:硬编码,写死了
2声明式验证:写xml文件验证
1编程式验证:重写ActionSupport中的public void validate()方法
Struts2内部封装了一个map,map的键就是表单上的“name”的值,map的值就是错误信息
注意动作类必须继承ActionSupport
默认validate()方法在所有执行动作方法之前执行
为了让不需要验证不执行validate方法,解决方式有两种:
1使用注解:@SkipValidation
2验证的方法名:validate+动作方法名(首字母要大写)
public void validate(){
if("".equals(user.getName())||user.getName()==null){
addFieldError("name","用户名不能为空")
}
}
对于是否输入为空的判断有两种方法
第一个isEmpty()是去掉左右的空格,第二个isBlank()是去掉左右外加内部的空格是否为空
public class TestDemo {public static void main(String[] args) {String s1 = "";String s2=null;String s3=" ";//trim//判断是否为空字符串或null,不去除空格System.out.println(StringUtils.isEmpty(s1));//trueSystem.out.println(StringUtils.isEmpty(s2));//trueSystem.out.println(StringUtils.isEmpty(s3));//false//判断是否为空字符串或null,去除空格System.out.println(StringUtils.isBlank(s1));//trueSystem.out.println(StringUtils.isBlank(s2));//trueSystem.out.println(StringUtils.isBlank(s3));//true}}
2声明式验证
在动作类所在的包下创建xml文件
文件名有命名规则:动作类+validation.xml,默认验证动作类里的所有方法
希望某些方法不被验证可以1 :加 注解:@SkipValidation
2 .xml文件名改成 动作类名-动作名-validation.xml
在xml文件中加入dtd文件(xwork.core.jar里的xwork-validator-1.0.3.dtd)
requiredstring 判断是否为null,或空字符串,去除空格
应用练习
1先建立user实体类
public class User {private String username;private String password;private Date birthday;private String hobby;private boolean married;
2写action
import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import com.qianfeng.domain.Student;public class StudentAction extends ActionSupport implements ModelDriven<Student>{private Student student = new Student();public String addStudent(){return SUCCESS;}@Overridepublic Student getModel() {return student;}public Student getStudent() {return student;}public void setStudent(Student student) {this.student = student;}}
3建立stu.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <s:head></s:head> <s:actionerror/> <body> <s:form action="addStudent.action"> <s:textfield name="username" label="用户名"></s:textfield> <s:textfield name="age" label="年龄"></s:textfield> <s:textfield name="email" label="邮箱"></s:textfield> <s:textfield name="password" label="密码"></s:textfield> <s:textfield name="repassword" label="确认密码"></s:textfield> <s:textfield name="score" label="成绩"></s:textfield> <s:textfield name="url" label="主页"></s:textfield> <s:radio name="gender" list="{'男','女'}" label="性别"></s:radio> <s:submit value="提交"></s:submit> </s:form> </body></html>选择框不是用checkbox了
4建立action-addstudent-validation.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"><validators><field name="username"><field-validator type="requiredstring"><message>用户名不能为空</message></field-validator></field><field name="age"><field-validator type="int"><param name="min">18</param><param name="max">70</param><message>年齡必須在18到70之間</message></field-validator></field><field name="email"><field-validator type="email"> <message>邮箱格式不正确</message></field-validator></field><field name="password"><field-validator type="requiredstring"> <param name="trim">false</param><message>密码不能为空</message></field-validator><field-validator type="stringlength"><param name="minLength">3</param><param name="maxLength">8</param><message>密码长度必须在3--8位之间</message></field-validator></field><!-- 确认密码需要和密码一致,所以使用验证器验证 --><validator type="expression"> <param name="expression"> <![CDATA[ password==repassword ]]> </param> <message>确认密码要和密码一致</message></validator><field name="score"><field-validator type="regex"> <param name="regex"> \d+ </param> <message>成绩必须是正整数</message></field-validator></field><field name="url"><field-validator type="url"><message>输入正确的url地址</message></field-validator></field><field name="gender"><field-validator type="required"><message>请选择性别</message></field-validator></field></validators>
5
- Struts2数据转换
- Struts2类型转换,数据验证
- Struts2数据类型转换,数据验证
- Struts2数据转换实例之数组转换
- struts2 类型转换器 Date型数据转换
- struts2 类型转换器 Date型数据转换
- Struts2 类型转换和数据校验
- struts2页面上double类型的数据转换成整数
- Struts2数据在jsp和action间自动转换
- Struts2 入门学习笔记(三)——数据转换
- struts2请求数据自动封装和类型转换
- Struts2请求数据自动封装和数据类型转换
- 传智播客-struts2(6)-数据校验、数据转换与文件上传
- Struts2学习总结(2)--数据接收,数据共享,类型转换,上传下载
- 框架 day28 Struts2-封装数据,类型转换,数据校验,国际化,拦截器
- Struts2学习总结(2)--数据接收,数据共享,类型转换,上传下载
- Struts2学习总结(2)--数据接收,数据共享,类型转换,上传下载
- 【Struts2】:Struts2的类型转换
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
- bootstrap nav nav-tabs 选项卡 的使用实例
- JavaScript基础(对象)
- iOS - 关于上传手机本地图片到网页的问题
- 2016.10.19回顾
- Struts2数据转换
- 安装Oracle后数据库不能启动,出现ORA-27125错误
- ACheckBox
- 海量数据处理
- 为新版B-JUI找回查找带回(lookup)插件
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- C#导出excel单元格格式设置
- 关于AChartengine点上显示数据的问题
- 青海盐湖工业有限公司成功召开TnPM项目启动大会