我最近使用Spring Validation,我使用CodeTutrs示例,然后继续使用我的代码的其他部分,当我回到它时,它不再在访问数据库之前验证用户输入。所以我得到Hibernate错误,说我不能输入“null”值。
以下是我的JSP的代码。我试图恢复原来的代码但它仍然无法验证。
<form:form action="regSubmit" method="post" modelattribute="registeredUsers">
<div style="float:left; margin-left:200px">
<font size="5">Register</font><br><br>
User Name: <input type="text" name="username"/><font color="red"><form:errors path="username" cssclass="error"/></font><br>
Password: <input type="password" name="password"/><font color="red"><form:errors path="password" cssclass="error"/></font><br>
First Name: <input type="text" name="first_name"/><font color="red"><form:errors path="first_name" cssclass="error"/></font><br>
Last Name: <input type="text" name="last_name"/><font color="red"><form:errors path="last_name" cssclass="error"/></font><br>
Email: <input type="text" name="email"/><font color="red"><form:errors path="email" cssclass="error"/></font><br>
<input type = "submit" value = "Submit"/>
</div>
</form:form>
我的控制器的代码如下。
package controllers;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import dao.RegisteredUsers;
@Controller
@RequestMapping("/regSubmit")
public class RegisterController
{
String next;
@RequestMapping(method=RequestMethod.POST)
public String regUser(@Valid RegisteredUsers registeredUsers, BindingResult result, ModelMap map, HttpServletRequest request) throws Exception
{
System.out.println("Inside Register controller");
String user = request.getParameter("username");
String pass = request.getParameter("password");
String fname = request.getParameter("first_name");
String lname = request.getParameter("last_name");
String email = request.getParameter("email");
dao.RegisterUser.registerUser(user, pass, fname, lname, email);
if (result.hasErrors())
{
return "RegisterLogin";
}
map.addAttribute("message", "Succesfully saved User "+ registeredUsers.toString());
/*map.addAttribute("user", user);*/
/*dao.Selector.whatToDo(user, pass, fname, lname, email);*/
next = "RegSuccess";
return next;
}
}
dao.registeredUsers,是我的POJO。
我的POJO的代码如下:
@Component
@Entity(name="REGISTERED_USER")
public class RegisteredUsers
{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
int user_id;
@Column
@NotEmpty
String username;
@NotEmpty
String password;
@NotEmpty
String first_name;
@NotEmpty
String last_name;
@NotEmpty @Email
String email;
/*getters and setters*/
我的RegisterUser的代码如下:
public class RegisterUser
{
public static String username;
public static String password;
public static String fname;
public static String lname;
public static String email;
public static void registerUser(String username, String password, String first_name, String last_name, String email)
{
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-user.xml");
UserRoster roster= (UserRoster)ctx.getBean("user");
RegisteredUsers u = new RegisteredUsers();
//from register controller to set the user information
u.setUsername(username);
u.setPassword(password);
u.setFirst_name(first_name);
u.setLast_name(last_name);
u.setEmail(email);
// actually add the user to the DB
roster.addUser(u);
}
我已经过了几次,无法弄清楚我的代码出错了。
真的很感激任何帮助!
答案 0 :(得分:0)
你能展示你的POJO课程
吗?BTW请点击此链接
http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/
这是一个完美的例子。
1)在jsp上你没有显示任何错误 2)你没有显示POJO,如果没有完成,就对它们进行验证。 3)在使用dao检查保存结果之前检查高优先级的错误,即在功能启动时