java spring 验证框架_Java spring框架表单验证

我使用的是spring framework 3.0.5。

我有一个表格:

Category:


Title:


Short Description:


Body:

而一个域的类入口:

public class Entry {

private int id;

private int category;

private String title;

private String shortDesc;

private String body;

private Date date;

//getters and setters

}和一个控制器:

@RequestMapping(value="/entryPost",method=RequestMethod.POST)

public String entryPost(@ModelAttribute("postedEntry") Entry entry,BindingResult result){

entryValidator.validate(entry, result);

if(result.hasErrors()){

return "entryPost";

}else{

rusService.postEntry(entry);

return "redirect:entryPost";

}

}在我的服务对象中:

public void postEntry(final Entry entry){

String sql = "INSERT INTO entries (category,title,shortDesc,body,date) VALUES(?,?,?,?,?)";

jdbcTemplate.update(sql,new Object[]{entry.getCategory(),entry.getTitle(),entry.getShortDesc(),entry.getBody(),entry.getDate()});

}并验证者:

public class EntryValidator implements Validator{

public boolean supports(Class clazz){

return Entry.class.isAssignableFrom(clazz);

}

public void validate(Object target,Errors errors){

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "category", "required.category","Category is required!");

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "title", "required.title", "Title is required!");

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "shortDesc","required.shortDesc", "Short description is required!");

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "body", "required.body", "Body is required!");

Entry entry = (Entry) target;

entry.setDate(new Date());

}

}如果有人发送类别的字符串值,而不是整数,则会在表单附近输入:

无法将类型java.lang.String的属性值转换为属性类别所需的类型int;嵌套异常是org.springframework.core.convert.ConversionFailedException:无法将值“h”从java.lang.String类型转换为int类型;嵌套异常是java.lang.NumberFormatException:对于输入字符串:“h”

但我不希望它输入这个。我怎样才能以某种方式验证这个值并抛出我自己的信息?

我试图在我的验证器中检查它,通过添加:

int cat = entry.getCatrgory();

if(cat.equals("0"))

errors.reject("invalid.category","The category is invalid!");但它不起作用 - 它仍然抛出了ConversionFailedException异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值