1.添加和修改的区别:修改时隐藏部分属性;添加时显示
1)将页面上有type=edit(要修改的)属性的字段都进行隐藏
$(“#employeeForm>tr[type=edit]”).hide()
$(“#employeeForm>tr[type=edit]”).attr(“disable”,true)//表示不可修改(只读)
区别:Readonly只针对input和textarea有效,而disabled对于所有的表单元素都有效
2.数据丢失问题(动态更新)
1)方案1:隐藏要传递的值(字段过多时,代码量比较大,且不安全)
2)方案2:在对应的字段加注解@Column(updateble=false)//表示不可修改(要使用的时候比较麻烦)
3)方案3:先查询数据库,获取持久化对象,然后把页面的数据set到对象里面
此方案要用到的注解:@ModelAttribute
@ModelAttribute:在方法头添加该注解后,执行所有代码之前都会执行拥有该注解的方法
@ModelAttribute(“editEmployee”)
同样在持久化对象的参数面前添加该注解
4)部门修改产生的错误:n-to-n
①持久化对象的id被修改会报该类型的错误;
②解决方法:在获取员工的时候讲部门设置为null
3.验证功能
1)引入jQuery中的jquery-validation插件
2)去官网查API
4.更新时的用户名验证
5.模板技术
数据+模板=文本输出
JSP就是模板技术的体现->只能作用于前端,JSP->Java->class文件->IO输出HTML文本
Velocity : vm
FreeMarker: ftl
(1.功能是否强大 2.性能好不好)
模板技术可以做什么?
1.动态页面静态化 2.可以做发邮件,短信的模板 3.代码生成器
模板技术的代码怎么写? -> 百度
6.代码生成器
1).先备份
2).准备模板(8个)
-> 把名称改成domain(大写Employee换大写Domain,小写Employee变小写Domain)
-> 只留一个name(其它的都不留,和部门相关的也删除掉)
-> 替换的位置$不要值不要出现前后空格
-> js里面的$问题
1.1 把jQuery部分 $ -> jQuery
1.2 自定义一个变量
#set( $D = '$' )
3).确定生成的顺序(有)
4).准备路径(有顺序)
5).准备模板名称(有顺序)
6).准备domain(可能有多个)
7).生成器代码
7.1 domain还要搞定一个首字母小写的名称
7.2 遍历路径/模板名称 -> 都可以拿到相应的数据
7.3 拼接真实路径 路径+名称.(替换大写Domain).(替换小写domain)
7.4 如果这个文件已经存在,就跳过不生成(代码生成器完成后加)
7.5 如果父文件夹不存在,创建它