gpt4 book ai didi

Java spring 框架表单验证

转载 作者:搜寻专家 更新时间:2023-11-01 01:38:00 25 4
gpt4 key购买 nike

我正在使用 spring 框架 3.0.5。

我有一个表格:

<form:form method="POST" modelAttribute="postedEntry">
Category: <form:select path="category" items="${menus}" itemValue="id" itemLabel="menuName"/><form:errors path="category"/>
<br/>Title: <form:input path="title"/><form:errors path="title"/>
<br/>Short Description: <form:textarea path="shortDesc"/><form:errors path="shortDesc"/>
<br/>Body: <form:textarea path="body"/><form:errors path="body"/>
<br/><input type="submit" value="POST IT!11"/>
</form:form>

还有一个域类条目:

public class Entry {
private int id;
private int category;
private String title;
private String shortDesc;
private String body;
private Date date;
//getters and setters
}

还有一个 Controller :

@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()});
}

还有一个 validator :

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: For input string: "h"

但我不希望它输入这个。我怎样才能以某种方式验证这个值并抛出我自己的消息?我试图通过添加在我的 validator 中检查它:

int cat = entry.getCatrgory();
if(cat.equals("0"))
errors.reject("invalid.category","The category is invalid!");

但它没有用 - 它仍然抛出 ConversionFailedException 异常。

最佳答案

您可以使用 typemismatch键入您的资源包。

例子:

typeMismatch = This is not a number!

关于Java spring 框架表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com