====================
之前已经实现了 注册 登录 添加客户 分页查询客户
现在来写上传的功能
下面是上传相关的组件或第三方包
现在使用的是struts2的默认拦截器里,有upload
先在add.jsp里添加文件上传的表单项,这个name要注意一下
现在就需要修改save方法了
这是拦截器的源码,而inputName就相当于表单提交过来的name
而在action里提供的3个属性,前面必须是和表单的name一样,后面的必须是固定的
而且必须提供set方法,因为采用了属性驱动
需要随机文件名和多级目录
这个replace是替换 - 因为UUID生成的随机码会有-
目录分离有一个固定的算法
这里只做了2级目录分离,是16的2次方个目录
直接copy,现在就可以测试了
然后把路径保存到数据库
在customer里添加一个字段
映射里也要添加
补充代码和action
还需要在数据库添加一列cust_image
现在设置拦截器
因为如果上传的文件过大,就会报错
我们可以在struts.xml里配置大小,这是上传文件的总值大小,还有一个单个文件的大小
这个maxinumSize就是单个文件的大小,下面的是允许的类型(在源码里面看,先搜struts-default.xml
找到对应的拦截器,然后搜类,前提是要有源码)
单个文件的就不是在全局配置里了,而是在action里,下面的一个是拦截的类型,如果类型不对,会出异常的
产生input异常,所以上面要加一个input的返回值,返回本页面,在add.jsp页面也要加一个显示错误信息的
错误信息一定要加
然后就是删除客户,在list.jsp里修改表单
需要传入id
写action
找到就返回对象,没找到就返回null
记得还需要删除客户对应的图片
删除完就重查一下
修改用户的信息功能,把add.jsp里的内容直接覆盖edit.jsp
左边的是struts2传统的方式,右边是struts2特有的方式,默认如果名称一样,那么就不需要写value
而用第二种,是不需要push数据的,因为action整个会放到值栈里,但是需要get方法
下面的input可以删掉了,上面的struts2标签只要填入name即可,会自动回显数据
后面的value要填入也行,但是必须用%包起来,代表强制解析
查看jquery的文档,属性那里有
然后回显数据,还需要把下拉框的那些数据也选中了
但是js里是不能使用struts2的标签库的
析
但是js力可以使用EL表达式,下面这句是判断属性值,在jquery的文档里有下面的写法
还需要放id回来
如果使用的是s:form标签,那么不需要写工程名, 里面还可以加一个namespace
写action,但是如果文件上传修改了,那么就需要判断是否修改了
如果修改了,那么就删除之前的图片
然后重新创建一个文件
写dao和返回页面
条件查询客户列表
在list.jsp里的客户名称那里,多复制几个td即可
先引入高版本的jquery
把之前在add.jsp里的请求也复制到这里
筛选按钮,提交的是findAll,而我们findAll里面用的是 离线条件查询,所以直接在findAll里面加条件即可
直接添加条件, Restrictions.qe相当于where xx.id=xx.id
还有level和industry也需要加判断
现在还有一个问题,那就是如果 假如点了一个下拉条件,然后点筛选,这个值下拉框的值就没了
这时候再点下一页,那么条件就没了,条件一没有,那么就是查询所有
这时候就应该数据回显