我想验证我的表单,但是它不起作用。 我的实体类
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 和表单跳转至添加管理员页面:
<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()
并没有返回错误,导致我的应用程序进入else语句并尝试保存用户。为什么@Valid
无法工作?当我尝试发送空表单时,我应该会收到错误信息,但是
result.hasErrors()
并没有返回错误,导致我的应用程序进入else语句并尝试保存用户。为什么@Valid
无法工作?