java-使用@Valid的Spring验证表单不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用@Valid的Spring验证表单不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3370字,纯文字阅读大概需要5分钟。
内容图文
![java-使用@Valid的Spring验证表单不起作用](/upload/InfoBanner/zyjiaocheng/680/0ac1ba68ddf04507b0e64bc3871c5a5e.jpg)
我想验证我的表格,但这不起作用.
我的实体班
import java.io.Serializable;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Email;
@Entity
@Table(name = "users")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "id")
private Integer id;
@NotNull
@Size(max = 20)
@Column(name = "username")
private String username;
@NotNull
@Size(max = 20)
@Column(name = "password")
private String password;
@NotNull
@Size(max = 20)
@Column(name = "firstName")
private String firstName;
@NotNull
@Size(max = 20)
@Column(name = "lastName")
private String lastName;
@Size(min = 11, max = 11)
@Column(name = "personalId")
private String personalId;
@Size(max = 40)
@Column(name = "city")
private String city;
@Size(max = 40)
@Column(name = "address")
private String address;
@NotNull
@Email
@Size(max = 30)
@Column(name = "email")
private String email;
@Size(min = 9, max = 9)
@Column(name = "phone")
private String phone;
@OneToMany(mappedBy = "user")
private Set<UserRole> userRoleSet;
}
adminList.jsp和表单转到addAdmin页面:
<form action="addAdminForm" method="post">
<input type="submit" value="Dodaj administratora" />
</form>
addAdmin.jsp页面格式:
<form:form action="addAdmin" modelAttribute="user" method="post">
<form:label path="username">Login: </form:label>
<form:input path="username" />
<form:errors path="username" cssClass="error" />
<br />
<form:label path="password">Has?o: </form:label>
<form:password path="password" />
<form:errors path="password" cssClass="error" />
<br />
<form:label path="firstName">Imi?: </form:label>
<form:input path="firstName" />
<form:errors path="firstName" cssClass="error" />
<br />
<form:label path="lastName">Nazwisko: </form:label>
<form:input path="lastName" />
<form:errors path="lastName" cssClass="error" />
<br />
<form:label path="email">Email: </form:label>
<form:input path="email" />
<form:errors path="email" cssClass="error" />
<br />
<input type="submit" value="Dodaj" />
</form:form>
控制器:
@RequestMapping(value = "/admin/addAdminForm", method = RequestMethod.POST)
public ModelAndView goAddAdminForm() {
ModelAndView mav = new ModelAndView("admin/addadmin");
mav.addObject("user", new User());
return mav;
}
@RequestMapping(value = "/admin/addAdmin", method = RequestMethod.POST)
public String addAdmin(@Valid @ModelAttribute("user") User user,
BindingResult result, Model model) {
if (result.hasErrors()) {
return "admin/addadmin";
} else {
userService.createUser(user);
user = userService.findByUsername(user.getUsername());
UserRole userRole = new UserRole("ROLE_ADMIN");
userRole.setUser(user);
userRoleService.createUserRole(userRole);
return "redirect:/admin/adminlist";
}
}
当我尝试发送空表格时,我应该收到错误消息result.hasErrors()不会返回错误,我的应用程序转到其他位置并尝试保存用户.为什么@Valid不起作用?
解决方法:
您确定验证无效吗?除非您注册了StringTrimmerEditor,否则您的字段实际上将是长度等于0的String实例,而不是在您提交表单时为空值,因此注释将认为这些值是有效的.
如果要验证String不为空(不为null且不为空String),请使用例如@NotBlank注释.我也自己尝试过,并且@Email批注还传递了空字符串,这意味着您的空表单现在实际上是有效的.
内容总结
以上是互联网集市为您收集整理的java-使用@Valid的Spring验证表单不起作用全部内容,希望文章能够帮你解决java-使用@Valid的Spring验证表单不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。