00:00
我们来看一下这个数据的格式化,打开eclipse,我们注意到在我们input.jsp这个表单里面,实际上有一个字段叫bos,还记得吧?OOK,我把这个打开,当时呢,我们是为了引入这个数据类型转换,数据类型格式化以及数据校验加的这样的一个字段,那对应的在实体类里边也有一个属性叫boss,不过它是。Date类型好的都打开了,我们看一看我们这个保存会不会起到作用,为了看这个效果呢,Employee handler这个save方法我来打印,一句话,Save加。Employee,诶,我们还记得employee这个兔子中方法已经被我们给重写了,这里边是带bird的,对吧,好。启动。
01:03
刷新。OK,这个页面呢,是可以被正常显示的,这个很重要哈,因为如果你实体类里边没有这个属性的话。它是不能够被正常显示的,对吧?好,我来添加一下GGG g163.com。没有注意,我来写一个日期,九零十二十二好了,我来问大家,我要是点提交的话。会正常去执行我们那个save方法吗?提交OK,发生了一个400错误,为什么会错呀?为什么会错呀?Spring mvc在进行类型转换的时候啊,他得知道我把怎么样格式的一个字符串转化成date类型吧,所以说你写的这个格式,你得告诉MVC你是个什么格式啊,诶这块的话呢,我们讲到第一点。
02:04
数据类型的转换跟数据的格式化通常是一起发生的,看到了吧,诶,一起发生的,好了,我们下边呢,我们先来解决这个问题,然后再说其内部原理是什么,可以吧。好了,解决方式,首先看spring mvc这个配置文件,我们注意到,诶,我们添加了mvc not drive,这个很重要哈,有这个,然后呢。在这个birth这个属性上面加上一个注解,这个不对,这什么呀,Take time for ma告诉他。Pattern样式是YYYY-MM-DD。保存。重新走,同学说这就可以了吗?看一看。这就可以了,Bos被正常的打印出来,看到为什么没有这个lastname啊,还记得我们上节课在讲的时候,我们家的这个any b吧,是吧,这个我们不去管它,我们只需要看这个Bo就可以。
03:15
好的。好的,这个事儿就解决了,说步骤的话,第一步。配置mvc not drive这个的话呢,是标配必须要配的是吧,然后。在目标属性上面加上一个注解就可以好的,我们再想一下,我们需要进行格式化的这个类型,除了时间以外还有什么呀?还有数值吧,就是date和number,于是的话呢,我来写一个private,注意我写了一个float类型。好的。这块我也加一个Siri ctrl c ctrl v。A fair。
04:04
Fair。重写兔传。这里边儿呢,需要把这个Siri给我打印出来。保存好。走起看看效果。回退刷新。哎哟,71行没有被正常的显示Siri哦,没加get对吧,加上g settle。停掉。保存。这周期。刷新有了,好了,写个GGG g163.com。MAIL19901022看这个三,我写个一逗号234逗号567.8。
05:07
提交。它不能被正常的转换吧,因为你输入的是个什么呀,你输入的是一个。字符串,而且这个字符串呢,还有特定的格式,那OK,这块也需要加一个注解,前面那个叫this time for ma,这个就叫number format,看到了吧?哎,我也可以来写一个pattern,等于呃,用井号来表示数值井号。逗号井井井。逗号井井井,点井好看效果。提交。看我们的Siri1234567.8啊,这个Bo也可以被正常的转换看到了吧,这个就是我们转换之后的效果。
06:02
好吧,那大家做的时候呢,只需要做两件事情,第一件事情配置mvc not drive,这个是标配是吧,必须要配的。第二个呢,在目标类型的属性上面加上data time form ma或者是number format就可以了。下面我们来探究其内部原理是什么。好的内部原理呢,实际上诶。我们需要看到我们这个convers service,那VC not drive默认service啊,是一个formings service,它既可以进行类型的转换,又可以进行格式化,我们看一下是不是这样。那我还是。呃,Last这块加到顿点的话,我把这个打开吧,好吧。把这个打开,我把这个关闭啊,把这个关闭就是说我让他为那个拉内去赋值。
07:03
周起。当然你也可以在其他的属性上去打断点,走起好代码,停住。我们看一下哪一行代码呢。对,连一下是吧,好了哪一行代码,这一行代码吧,是吧,我们看一下B。哎,Finder往下翻,我们看到了这个convers service叫什么呀?叫default forming conversion service forms是吧?它不但能够进行类型的转换,还可以完成。数据的格式化,好的,进一步的把这个打开,我们看看这个里边有什么呀。哎,有这样的病,比方说datatime form notation form factory,比方说number format notation form factor,好了,看PPT。
08:05
看PPT正是因我们service service有这样的这个,所以。我们才可以使用format或者date format注解,就是说这两个B啊,支持我们这个format跟date format这样的注解,听清了吧。他们支持这样的注解,于是我们就可以进行使用了,Number format,哎,A data format里边支持patternon属性,也支持ISO跟跟style属性,具体的话呢,大家可以呃自己看一下,这块的话呢,我们就不再细说了,那number for ma除了支持pon以外的话呢,还支持这个style。可以吧?好。这个原理的话呢,也说完了啊,还有一件小事需要说一下。这件小事儿呢,在这儿。
09:02
先回来。找到我们spring mvc的配置文件,诶,我们前面我们注意到。我曾经配置过一个类型转换器呀,那如果我要是想用这个类型转换器G我这块我去配这个converse service属性的话。我把这个加上。那么这个时候那个格式化的那个功能还能用吗?这块是什么呀,叫converse converse service factor b吧,那实际上它也有一个什么呀,叫data啊,Forming过了哈,Foring conversion service factory b这样写。我们既可以添加自定义的类型转换器,又可以使用VC给我们提供的。格式化的这样的这个作用是吧。
10:01
看一下。走起,好回退,呃,来继续。G g163.com。一九九零十二十二来1234567.8。走这个结果是一样的,对吧,没问题没问题好了。这样的话呢,这个原理也说完了啊,再说一个小问题。这个小问题是什么呢?大家说我如果这个类型转换要是失败了的话怎么办?类型转换失败或者格式化失败的话怎么办?哎,这个时候的话呢,我们前面讲那个data b的时候啊,我们说过这样一件事,我们往前翻一下哈,Data b里边我们说过这样一件事,这个错误结果呢,会放到这个班丁result里面,于是我就可以在这个目标方法这块加上一个什么呀班丁。
11:07
Result result,如果要是类型转换出错的话,那个错误信息就在这个里边,于是我来写一下啊,Result会有一些方法,比方说get count get a count大于零的话,我就打印一下sit out出错了。出错了?好了,错误是什么呢?For循环看一眼result.get。F as叫什么呀?字段的错误,它里边类型是什么?叫field error。Error error,好,我来打印一下sit out。
12:06
前边呢,我打这个字段的名字error点看见了吗?Field后边呢,我来打印默认的啊。消息问出消息,Default。Message,好了,我们先看一下。走起。类型转换失败,怎么样失败啊?at163.com失败这个样子随便写,这不失败了吗?进来好了,我们看出错了几个错误啊,有两个错误吧。好,这样的话呢,我们出错这个消息啊,也可以得到,那下边再说的话呢,有两个问题,第一个就是出错这个消息如何进行国际化,你不能用这么老长的默认消息啊,第二个问题,在页面上如何显示这个错误消息,这两个的话呢,我们下节课再说。
13:13
好吧,哎。多了一个新的内容,如果要是想得到这个错误消息的话。出错的话,得到这个错误消息的话,我们可以在目标方法加上这个班丁对造的参数,我们可以调用其方法看是不是有错误发生。好的。
我来说两句