音乐网站建设需求分析qq在线登录手机版
news/
2025/10/9 4:45:04/
文章来源:
音乐网站建设需求分析,qq在线登录手机版,网站文件保护怎么做,wordpress 私密文章目录
一、总述
二、商品分类问题
三、前端检验
四、后端检验
五、总结 一、总述
在完成完商品分类的时候#xff0c;后来测试的时候还是发现了一些问题#xff0c;现在将其进行解决#xff0c;问题如下#xff1a;
1. 取消显示的时候#xff0c;如果取消了显示后来测试的时候还是发现了一些问题现在将其进行解决问题如下
1. 取消显示的时候如果取消了显示再次想要其进行显示的时候发现不能再次被显示了。
2. 在修改页面发现是否显示按钮完全也是不起作用
另外从现在这个商品品牌修改页开始就要进行参数校验了参数校验除了前端的参数校验还有后端的参数校验。
二、商品分类问题
1. 当取消显示让其想再显示的时候发现其不能再显示了。
其实这个问题出现的原因也是很简单就是一旦选择了不显示之后因为在后端进行了逻辑删除因此当不显示之后其实也就是进行了逻辑删除。一旦删除了过后肯定再去找这个品牌对象肯定也是找不到了因此也就无法再去修改它的状态了。
解决办法
取消其逻辑删除MP的配置那里还有实体类里面的注解也要将其注释掉将是否显示的这个字段变成一个标志字段 2. 在修改页面的是否显示修改不起作用
原因就是当初只记得单纯加上这个组件但是忘记修改其默认的绑定值了默认是false和true。
三、前端检验
之前前端校验是使用原生的js代码进行控制的重复繁琐。
现在可以直接使用vue中为我们提供好的参数校验框架解决这个问题。
参考elementUI的表单组件可以看到有表单验证组件
步骤
1. 先在表单上面加上校验的属性 通过这个:rules绑定其校验的规则
2. 写校验规则 按照这个格式写好就行了。
也可以自定义校验不使用它已经写好了的 这个就需要查看下面的组件了自定义校验规则
也就是这样 还是像之前一样只不过在里面另外加了个校验器这个校验器就是一个方法。
使用callback()来显示异常的校验信息当里面什么都不放的时候。就代表参数正常
在我的品牌管理中的修改和新增的那个页面直接采用这种方法进行校验。 其中数字还有一种简便的方式。 这里我直接贴代码了
dataRules: {name: [{ required: true, message: 品牌名不能为空, trigger: blur }],firstLetter: [{validator: (rule, value, callback) {if(value ){callback(new Error(不能为空));}else if(!/^[a-zA-Z]$/.test(value)){callback(new Error(首字母必须是字母));}else{callback();}},trigger: blur}],sort: [{validator : (rule, value, callback) {if(value ){callback(new Error(不能为空));}else if(!Number.isInteger(value)){callback(new Error(请输入数字));}else{callback();}},trigger : blur}]}
四、后端检验
后端校验也是必须的看似前端就已经校验过一遍了但是其实前端只是防了老实人真正懂技术的其实可以直接访问后端接口那么此时后端就需要进行参数校验但是之前的参数校验是直接使用大量的if条件进行判断的很繁琐麻烦很前端一样。
本次使用的参数校验的框架使用的是JSR303validation框架
其实这个使用起来很简单最简单的就是直接在参数对象所对应的类的字段上面添加上相应的注解然后真正用的时候在请求参数那里加上valid注解代表启用参数校验这就可以校验了。
首先在javax.validation.constraints包下面包含了许多的参数校验的注解比如说非空还有最大最小邮箱地址判断等。 对于每个注解如果不熟悉的话就可以查找这个文件ValidationMessages_zh.properties这里面包含中文解释
常用的注解有NotEmpty不能为空包括不能是空字符串、Null只能为空、Pattern正则表达式。
就像下面我这个使用了
public class Brand implements Serializable {public static final long serialVersionUID 1L;/** 品牌id */TableId(value brand_id)Null(message 商品id必须为空,groups {AddStatus.class})Min(value 0,message 必须是大于0的整数,groups {UpdateStatus.class})private Long brandId;/** 品牌名 */Excel(name 品牌名)NotEmpty(message 品牌名不能为空,groups {AddStatus.class})private String name;/** 品牌logo地址 */Excel(name 品牌logo地址)NotEmpty(message logo地址不能为空,groups {AddStatus.class})URL(message 请输入合法的logo地址)private String logo;/** 介绍 */Excel(name 介绍)private String descript;/** 显示状态[0-不显示1-显示] */Excel(name 显示状态[0-不显示1-显示])//TableLogic(value 1,delval 0)ValueList(vals {0,1},groups {AddStatus.class})private Integer showStatus;/** 检索首字母 */Excel(name 检索首字母)Pattern(regexp ^[a-zA-Z]$,message 检索首字母必须为字母)NotEmpty(message 检索首字母不能为空,groups {AddStatus.class})private String firstLetter;/** 排序 */Excel(name 排序)Min(value 0,message 排序编号必须是一个大于0的整数)private Long sort;} 这是第一步准备工作但是要真正的启用参数校验还需要启用参数校验
在控制器的请求参数那里就是请求的实体类的前面加上Valid即可。
下面介绍这个校验框架的高级功能有分组校验还有自定义参数校验注解
1. 分组校验
这个实际上很简单因为在控制器的那里其实是有着许多控制器的有个时候多个控制器其实是使用的相同的实体类的这里的话不能对于任何的都使用一套校验规则最简单的就是说比如添加和修改对于姓名等字段添加是必须的但是修改却并不是必须的。
步骤
1. 先定义注解
这个注解只是起着标识的作用就像Override注解一样里面什么内容都没有 2. 在实体类上面定义好注解与对应的接口进行绑定 只需要写上其注解对应的分组
3. 在控制器那里直接也要标明状态
控制器这里要注意一下不能依旧使用之前的Valid注解了 需要使用Validation注解在里面写好value 接口
下面是使用的效果 这里的修改的时候其实是并没有加上name等字段的但是也可以请求成功。原因就是那些字段是使用add注解进行绑定而修改的话是与update进行绑定
2. 自定义校验注解
比如在这里我检验 是否显示的状态只能是 0和1 其他的不行
步骤
1. 写一个校验注解 这里可以写上自己的文件写上自己的提示信息 2. 写好校验器
点击validatedBy属性可以发现校验器需要实现ConstraintValidator这个接口 这里我直接贴上这个检验器
public class ValueListConstraintValidator implements ConstraintValidatorValueList,Integer {private SetInteger set new HashSet();Overridepublic void initialize(ValueList constraintAnnotation) {int[] vals constraintAnnotation.vals();for (int val : vals) {set.add(val);}}Overridepublic boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) {return set.contains(integer);}
}
3. 在检验注解上面指定好校验器 然后就能直接进行使用了
下面是效果 五、总结
这一次就是对商品的品牌进行了bug修复另外还有就是前后端校验框架的使用还是挺简单的没什么技术含量的东西
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932191.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!