首页 > 其他分享 >数据绑定之数据类型转换

数据绑定之数据类型转换

时间:2022-10-20 22:31:21浏览次数:44  
标签:类型转换 String money 绑定 createTime uname import 数据 public

springmvc已经创建好了数据转换和数据绑定的类

如果我们的数据不符合他们定义好的格式,需要自己处理

处理方式两种

3.1 方式1 自定义转换类
3.1.1 创建转化类 extends PropertyEditorSupport

DateEditor.java

package com.test.binder;

import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

//自定义转换类
public class DateEditor extends PropertyEditorSupport {

private SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");

@Override
public void setAsText(String text) throws IllegalArgumentException {

Date date=null;


try {
date= simpleDateFormat.parse(text);
} catch (ParseException e) {
e.printStackTrace();
}

setValue(date); //将数据类型转换后的值 存入 对象的属性中

}
}

FloatEditor.java

package com.test.binder;

import java.beans.PropertyEditorSupport;

public class FloatEditor extends PropertyEditorSupport {

@Override
public void setAsText(String text) throws IllegalArgumentException {

// text 1,234,567 //金额
//去掉,
text=text.replaceAll(",","");

float value= Float.parseFloat(text);

setValue(value);
}
}
1.2 注册到WebDataBinder
 在控制器中注册

@Controller
@RequestMapping("/card")
public class CardController {

@InitBinder
public void initBinder(WebDataBinder binder){

//注册自定义的绑定对象
binder.registerCustomEditor(Date.class,new DateEditor());
//如果对象属性是float 这里用float.class
//如果对象属性是Float 这里要用Float.class
binder.registerCustomEditor(float.class,new FloatEditor());
}
}

3.1.3 测试案例

package com.test.pojo;

import java.util.Date;

public class CardInfo {

private String cardID;
private String uname;
private float money;
private Date createTime;

public String getCardID() {
return cardID;
}

public void setCardID(String cardID) {
this.cardID = cardID;
}

public String getUname() {
return uname;
}

public void setUname(String uname) {
this.uname = uname;
}

public float getMoney() {
return money;
}

public void setMoney(float money) {
this.money = money;
}

public Date getCreateTime() {
return createTime;
}

public void setCreateTime(Date createTime) {
this.createTime = createTime;
}

@Override
public String toString() {
return "CardInfo{" +
"cardID='" + cardID + '\'' +
", uname='" + uname + '\'' +
", money=" + money +
", createTime=" + createTime +
'}';
}
}


<form action="card/addCard" method="post">
卡号:<input type="text" name="cardID" />
用户名:<input type="text" name="uname" />
余额:<input type="text" name="money" />
开始使用日期:<input type="text" name="createTime" />
<input type="submit" name="sub" value="提交" />

</form>
package com.test.controller;

import com.test.binder.DateEditor;
import com.test.binder.FloatEditor;
import com.test.pojo.CardInfo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.Date;

@Controller
@RequestMapping("/card")
public class CardController {

@InitBinder
public void initBinder(WebDataBinder binder){

//注册自定义的绑定对象
binder.registerCustomEditor(Date.class,new DateEditor());
//如果对象属性是float 这里用float.class
//如果对象属性是Float 这里要用Float.class
binder.registerCustomEditor(float.class,new FloatEditor());
}

@RequestMapping("/addCard")
public String addCard(CardInfo cardInfo)
{
System.out.println("---------");
System.out.println(cardInfo.getCardID());
System.out.println(cardInfo);
return "success";
}


}

3.2 通过注解的方式
3.2.1 设置配置信息,开启注解

springmvc.xml文件中添加

mvc:annotation-driven会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的,即解决了@Controller注解使用的前提配置。

同时它还提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB,读写JSON的支持(Jackson)。我们处理响应ajax请求时,就使用到了对json的支持(配置之后,在加入了jackson的core和mapper包之后,不写配置文件也能自动转换成json)。

   <mvc:annotation-driven></mvc:annotation-driven> 

3.2.2 在类CardInfo2类的属性中添加注解

//通过注解来实现数据类型的转换
public class CardInfo2 {

private String cardID;
private String uname;

@NumberFormat(pattern ="#,#.#" )
private float money;

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createTime;

public String getCardID() {
return cardID;
}

public void setCardID(String cardID) {
this.cardID = cardID;
}

public String getUname() {
return uname;
}

public void setUname(String uname) {
this.uname = uname;
}

public float getMoney() {
return money;
}

public void setMoney(float money) {
this.money = money;
}

public Date getCreateTime() {
return createTime;
}

public void setCreateTime(Date createTime) {
this.createTime = createTime;
}

@Override
public String toString() {
return "CardInfo{" +
"cardID='" + cardID + '\'' +
", uname='" + uname + '\'' +
", money=" + money +
", createTime=" + createTime +
'}';
}
}

标签:类型转换,String,money,绑定,createTime,uname,import,数据,public
From: https://blog.51cto.com/u_15707781/5780710

相关文章

  • 华为云灾备,让数据风险无处遁形
    云计算产业的快速发展,在众多方面都带来了革新,尤其是在数据管理中,企业可以更好的依赖于云服务对每日剧增的数据进行科学管理。因为一些企业的规模有限,无法投入更加多精力去......
  • 数据爆炸别担心,华为云大数据BI解决方案为你排忧解难
    数字化转型时代,企业面对海量数据爆发式增长,传统的数据分析平台已经成为挖掘数据价值的瓶颈,企业迫切需要进行数据分析平台转型。基于这些原因,华为云大数据BI解决方案为企业......
  • 应用华为云大数据BI解决方案下的金融业现状
    企业进行数字化转型是一股不可阻挡的浪潮,但企业数字化转型不仅仅只是一个概念,其中会遇到前所未有的挑战和困难。推进过程缓慢、数据孤岛、数据管理困难,自建分析平台成本过......
  • 华为云灾备服务,凭什么能保护企业数据资产?
    数据库作为存储企业所有数据的场所,它的安全性是尤为重要的。世界范围内数据中心级故障层出不穷,各类消息如火灾、水灾、地震等自然灾害层出不穷。与此同时,在日常运行维护中......
  • docker数据卷的使用
    在使用docker时,如果不挂载数据卷直接运行一个容器,在删除容器时会丢失所有新增或修改的数据,并且经常会遇到多个容器需要访问同一份数据的情况,所以我们在运行一个容器时需要......
  • python 图形的数据处理 (折线图为例)
    1.通过json模块对数据进行处理ab173.com是懒人工具-json在线解析,可以通过他对json数据进行格式化的分析。"""演示可视化需求1:折线图开发"""importjsonfrompyec......
  • 软工大数据期中测试
    Result文件数据说明:Ip:106.39.41.166,(城市)Date:10/Nov/2016:00:01:02+0800,(日期)Day:10,(天数)Traffic:54,(流量)Type:video,(类型:视频video或文章article)Id:8701(视频或......
  • 十年磨一剑,华为云数据灾备解决方案为你解决后顾之忧
    随着时代的不断发展,我们进入了一个全新的网络时代,各种各样的数据呈现出爆炸增加的态势,企业在头疼数据存储的同时也在担忧自身数据损害和丢失的问题。为了保障企业数据不丢......
  • 及时恢复,华为云灾备数据解决方案让你无忧办公
    一个企业的成立可能需要大笔的资金和人员,但一个企业的稳定和发展一定离不开数据的支持,这是公司最重要的软实力,只有保障好自身公司的数据信息才能够更好地保障公司的稳定,如......
  • 吐血整理python数据分析利器pandas的八个生命周期!
    这里从八个pandas的数据处理生命周期,整理汇总出pandas框架在整个数据处理过程中都是如何处理数据的。【阅读全文】也就是从pandas的数据表对象以及数据汇总、数据统计等......