背景:
在数据库设计时都会给字段设置长度,例如: name varchar(20) ,当映射到Controller层时,如果不主动检查参数长度的话,参数最终会保存到数据库。如果字段超长,数据库会抛异常:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'NAME'
建议:jfinal在获取activerecord的数据库元信息时,其实是知道数据库设置的长度的,是否可以在Controller设计一种参数级别的注解@Valid(class=UserModel.class ,field="name") 在获取到参数超长时,直接拦截并返回
例如: public void saveUser(class=UserModel.class,field="name" String name ,String email){} 表示这个参数最终要映射到UserModel 映射的表的name字段。甚至可以拓展判断非空
PS:当然我知道jfinal提供有参数验证机制,也有其他的验证框架,我只是觉得一个参数长度在数据库设计时要写一次,验证代码要写一次,如果要改,两个地方都要改。以上纯属个人的一个想法
项目:JFinal