00:00
最后呢,我们来完成这个修改操作,这个修改操作一共需要分为两个步骤。第一个步骤,显示修改页面,这实际上是一个表单回显。第二个步骤,点提交按钮,完成修改操作。需要注意的点,第一个我们注意到显示修改页面的这个UI是EP带了这样的一个参数,是以占位符方式带的,而不是以问号那个方式带的,对吧?同时这是一个get请求,然后表单回写。第二个需要注意的,Lastname不能修改。在回显的时候啊,这里边是没有这个lastname的。而且我们也不打算以。隐藏域的方式来存放这个lastname。大家想到了是吧,我们使用那个modelt注解。
01:04
修改呢是一个put请求,UI是emp成功之后,我们重定向到那个list页面。OK,我们开始。首先找到我们的list。那这个页面呢,应该把这个edit改为以前是空哈,嗯,我重新写一下,把这个edit改DMP。斜杠。ID对吧。但是这个ID是需要带符的EL表达式吗?Emp的ID通过这样的方式呢?我把这个ID给带过去,下边我们来写这个目标方法。写这个目标方法的话呀,这块有一点小问题,我们前边写过一个引input的方法,大家还记得吧,这里边这个UI呢是emp,而我们现在这个UI是emp斜杠。
02:03
ID是这样吧,这个并不是主要的,因为什么呀,因为我这个Y流本身啊,我是一个字符串数组,我完全可以支持多个URL,问题在哪呢?问题在于这个入参,我们现在这个请求的入参,我们需要以。Pass variable的方式去把那个ID给我传进来,而我发的请求要是这样的请求的话,他是没有办法去传那个入参的,这个时候的话呢,我们就不能够把这两个uri用一个方法。OK,那我来写这个方法,Public string input input request。Mapping value EP ID。
03:05
Method request method点请求,好的注意看,我要传这个ID过来,Pass variable ID in类型的ID后面再跟一个map就可以了,String object map,刚才我们讲的这两个方法,这两个input不能放在一起的原因就是我这个里边我要写一个使用pass variable修饰的一个ID。当我发的请求要是不带这个的话,这个时候STEMVC没有办法把这个入参传进来,它就会报错,听清了吧,所以说的话呢,诶,这个时候这两个input不能够写在一个方法里边,好的,我们来看一下map.put先搞一个employee。
04:07
employ.get ID用于回显的employee,这个employee必须跟表单页面的这个model attribute属性值是一致的,对吧?好的,然后呢,我们还需要一个部门的集合departments department.get。Departments好看效果。点一下好了,可以回线没问题的,再点一个。效果OK,目标页面啊,需要简单的来改一下,就简单的改一下,首先我们需要改的是什么呢?首先需要改的是这个。
05:05
Lastname修改的时候,这个lastname不能被显示,什么时候是修改啊,C标签没导进来。Cali。C什么时候去修改啊。有ID的时候是修改吧,employee.id不等于空的时候,这是修改。修改的时候这个不能被显示。修改的时候它不能被显示,那我写的不对吧,是吧,是空的时候才能被显示,好了再写一个c if employee.id不等于空呢,哎,我这个时候我需要显示。
06:03
ID form hidden pass ID,这就可以了。还有一个需要注意的,我们需要把这个port请求转为put请求,所以说我需要写一个隐藏语type hidden。Name_method value put,写好看效果。这样是没问题的,右键原文件我们看到,诶ID put这块同学可能会有问题哈,你前边这个hidden用的是form标签,这个你为什么就使用了一个input这样的一个hidden,而不再用form hidden呢?大家能想到吗?我能这么写吗?Pass,叫下划线,Method。
07:01
哦。首先它没有Y6这个属性值,看到了吧,那我硬写上吧。不,大家说这样式的话能过吗?找一个看看效果。没过吧,为什么呢?哎,33号有问题,往下我们看一眼,他说。这个method是不被允许的,因为我employee里边没有这个属性,好了回来。我们这个form标签呢,有一个作用是用于这个表单回显的,所以说它要求你在form标签里边的这个pass所对应的属性,在我们model tri的那个B里边必须有对应的属性才可以听懂了吧,所以说这样写不行。这样写不行,注上吧,我来说一下为什么说不能,对于下划线method不能使用form hidden标签。因为。
08:10
Model attribute对应的并中没有下划线,Method这个属性应该写什么呀?应该诶这样写。应该用我们的input input type hidden。上边name_method value put这个就可以是吧。这个无所谓。它并不跟这个modelt tribute相关联,好刷新OK的,下边的话呢,我来完成这个修改操作,Public update完成修改,传一个employee过来,来EPS。
09:14
Redirect根目录下的emps employee没写完是吧?好,我要写个employee da.save employee这个方法呢,是包含这个修改操作的,看到了吧,ID是空的话呢,我就设个idd,不是空的话,我就直接给他置换了回来。写杠,Request mapping value emp,请求方式,Request method点。Good,请求。写好了,那我来问大家,如果要是这样往下运行的话,它会怎么样啊?他会正常的完成修改吗?
10:02
会吗?我刷新注意这个D哈,我把这个D改成BB找一个。看。拉内是空了吧?这个问题我们在前边详细的讨论过,它为什么是空,还记得吧,诶。记得我们有这样的一个图。前边讲model tribute的时候详细的探讨过,这里边的话呢,我们就不再说明了,如何解决这个问题,肯定是使用model tribute修饰的方法是吧?Get可以get employee。两个参数,一个是request。Request per。这个是Y等于。
11:02
ID。Record等于false integer类型的ID,还有一个就是map string object map,这个方法呢,使用modelt tribute进行修饰,如果ID是空的话,如果ID不是空的话,说明这是一个修改操作,因为只有这个时候我们才传了ID这个请求参数,其他的时候怎么传的呀?用的是restful风格是吧?好的,map.put I employee。Employeeo.get ID,好的,需要注意的是我修改这个方法呢,这个参数并没有使用model to的进行进行修饰吧,所以说这块这个名字必须是类名第一个字母小写。
12:04
走起看效果。先刷新。重启了哈,我们还是来看这个DD,我把这个DD呢改成。AA改成mail d找一个。看到d DD mail AA,这样这个修改就完成了。好,我们把这个修改呢来做一个小结,看一下修改呢包含两个步骤,第一个步骤,诶,我先需要来干什么呀,我先需要来完成这个显示表单,这是一个get请求过来。这块需要注意的是,这两个input没有办法写到一起,原因的话呢,我们已经说过了,别的没有什么问题。表单。这块需要注意的呢,我们这个。添加跟修改用的是一个页面,所以说呢,我用这个c if,诶对这个表单显示这个信息啊,啊进行了一个这个过滤,诶我们需要注意的是,我对于这个下划线method,我不能够使用form标签,如果你用这个form标签的话,它就要求你model attribute对应那个bin里边有对应的属性,下划线method的并不是一个我B应该有的一个属性,所以说呢,我们用的是input这个。
13:28
表单呢,此外的就没什么了,是吧,正常的他给你进行回显,这个department是一个。下拉框这块,这个真的是一个radio,它都可以很好的帮我们进行回显VC标签,嗯,包括这个ID啊,Email啊都没问题,好点击。提交的时候,哎,我们需要注意到。我们用了一个下划线,Method的这个值是put,这是一个put,请求过来完成这个。
14:00
修改操作,诶,我们需要加上这个model吹出方法是吧,否则因为没有提交那个last name属性,那个值会被制空,刚才已经看到了,还有一个地方呢,说一下刚才啊,我悄悄的。在视频里边没录上是吧,我把这个24行改为了一个绝对路径,相对于相对路径的话会有问题,说一下为什么会有问题呢?添加没有问题,但是修改的时候有问题,你看添加我找一个,呃,V v v v at at硅谷点com。走这没问题,好修改走一个大家注意哈,这是EMP1001006,走这个时候这个路径就是相对于那个EP的,所以说这个时候应该写一个绝对路径,那实际上开发的时候我们都推荐大家使用绝对路径,以前没写的话,实际上是在偷懒。好吧,大家把这个spring VC基基于restful风格的CD好好的写一下,很有意思。
我来说两句