温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
下边呢,我们来学习一个比较重要但同时又比较难理解的一个注解,叫model attribute,它可以模拟出srut two preable拦截器的效果。我们首先来看一下它的使用情境,我们需要完成一个修改操作,不过这个修改操作呀,呃,有一点小的条件。有一个字段不能被修改。举一个例子,比方说这条记录的录入时间。录入时间这个字段就不能被修改,对吧?诶,我们假设这个数据表只有三个字段,有一个字段不能被修改。好的,这样的话呢,表单传入的就只能是两个字段。按照我们以前的经验,我们应该在目标方法里面传入对应类的一个对象。好了,这个对象呢,在表单复制之前应该是新创建的吧,这是一个new。
01:04
然后表单把请求参数付给了这个对象的对应属性,注意只附了两个属性,于是有一个属性值就是空。好了,我拿着这样的一个对象进行更新的话,更新之后的效果就是这样的一个效果是吧?哎,两个属性是有值的表单传入的,而有一个属性值呢,是空,这个实际上跟我们的要求是不一样的,你不能是空啊,这个值是不能被改的,就是还得是以前那个值至空不行。对吧。嗯,这个问题如何解决?同学可能会想,哎,使用隐藏玉啊,隐藏域有两个问题,第一个问题。如果这是一个比较敏感的字段,比方说这是密码,你不能放,不能放隐藏语里边吧。这如果不能修改的资料要是比较多的话,这么做也比较麻烦。
02:05
还有一个方案,比较笨的一个方案。我在更新之前,我把这个值从数据库里边获取,然后再给它附上,这样做呢比较麻烦,那实际上我们有更优雅的解决方案。看一下正中解决方案,实际上呢,就是stra to preable拦截器的那个效果。我在。表单对对应属性复制之前,这个对象不是new的,而是从数据库里边获取的,听清了吧,区别这个对象是new的,这个对象从数据库里边获取的,这样的话呢,这三个属性值就都是数据库里边对应的值吧,好了,我赋值我负了两个值,有一个值没负,但这个值是数据库里边那个值,我拿着这个对象在更新的话,不就刚好是我们要的效果吗?
03:01
这就是model attribute的使用场景。OK,下边的话呢,详细的来看一下。
我来说两句