Hibernate 我的Spring验证停止工作,我可以';我不明白为什么

Hibernate 我的Spring验证停止工作,我可以';我不明白为什么,hibernate,validation,spring-mvc,Hibernate,Validation,Spring Mvc,我最近正在使用Spring验证,我使用CodeTutrs示例使其工作,然后继续我的代码的其他部分,当我回到它时,它不再在访问数据库之前验证用户输入。所以我得到了Hibernate错误,即不能输入“null”值 下面是我的JSP代码。我试图恢复到我的原始代码,但仍然无法验证 <form:form action="regSubmit" method="post" modelattribute="registeredUsers"> <

我最近正在使用Spring验证,我使用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>
道。注册者,是我的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*/
   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);


}
我的注册服务器的代码如下:

    @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*/
   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);


}
我已经检查过几次了,不知道我的代码哪里出错了


任何帮助都将不胜感激

你能展示一下你的POJO课程吗

顺便说一句,请点击此链接

这是一个很好的例子

1) 在jsp上,您没有显示任何错误 2) 您尚未显示POJO,如果未显示,请对其进行验证。
3) 在使用dao保存结果之前,请检查高优先级错误,即在函数启动时

是否可以添加RegisteredUsers类以及静态方法的代码
dao.RegisterUser.RegisterUser(用户、密码、fname、lname、电子邮件)
?另外,为什么您要使用用户、密码、名字等普通输入字段,为什么不使用
标记将这些字段直接绑定到RegisteredUsers类?@Gummyball我已经添加了您请求的代码。我曾尝试使用form:input直接绑定,但当我遵循我遵循的示例时,没有显示任何文本字段,而且当我添加它们时,也没有解决问题。我最初的想法是,我忘记了线路上的某个地方的装订,但我检查了一下,似乎看不到任何问题。您应该能够使用
而不是
,并且它应该显示输入文本字段。你没有得到任何文本字段的事实说明了这一点。您还可以添加控制器中设置JSP的部分,可以说是GET。另一方面:在RegisterUser类中,每当您想要注册新用户时,您都在构建自己的Spring上下文。为什么不使用Spring的主要优势并注入您的依赖项呢?为了使Spring绑定工作,您还需要在控制器方法中使用@ModelAttribute,如下所示:
public String regUser(@Valid@ModelAttribute(“registeredUsers”)registeredUsers registeredUsers、BindingResult、ModelMap映射、HttpServletRequest请求)抛出异常
Ahh,我明白了,好的,谢谢@Gummyball,我对Spring和Hibernate还不熟悉,所以我的代码仍然缺乏优雅,我只是想掌握一些东西。我将尝试你在代码中的建议!!再次感谢您的帮助,我已经输入了您要求的代码。谢谢你的链接,我一定会看看的,谢谢!!在变量或列条目的Dao中,只需将验证放在@NotEmpty等位置即可。我按照您的建议添加了注释,但在尝试将数据发送到数据库之前,它仍然不会进行验证。当你说道的时候,你指的是POJO,对吗?谢谢你的帮助!!我发现了问题所在,我对数据库的调用不知何故在检查错误之前就被放置好了。当我纠正这一点时,一切正常。非常感谢您的帮助,您的建议确实帮助我澄清了我遇到的其他问题。