Java 验证Spring MVC表单中的整数

Java 验证Spring MVC表单中的整数,java,spring,validation,spring-mvc,Java,Spring,Validation,Spring Mvc,这与其说是Spring的编程问题,不如说是征求建议 我在JSP上有一个表单,要求用户输入他们的ID号 页面上的表单调用控制器中的方法。从控制器调用验证程序 如果用户输入非数值,我相信我可以使用以下方法检查: typeMismatch.java.lang.Integer=您在一个字段中输入了一个非数值,该字段需要一个数字 但我的问题与数据库中用户ID的检查有关,即如果ID不存在,则应拒绝输入 那么,可以在验证器类中使用服务吗?对此有什么考虑吗? < P>这取决于您是否将此验证规则视为业务逻辑的一部

这与其说是Spring的编程问题,不如说是征求建议

我在JSP上有一个表单,要求用户输入他们的ID号

页面上的表单调用控制器中的方法。从控制器调用验证程序

如果用户输入非数值,我相信我可以使用以下方法检查:

typeMismatch.java.lang.Integer=您在一个字段中输入了一个非数值,该字段需要一个数字

但我的问题与数据库中用户ID的检查有关,即如果ID不存在,则应拒绝输入


那么,可以在验证器类中使用服务吗?对此有什么考虑吗?

< P>这取决于您是否将此验证规则视为业务逻辑的一部分。我可以看到以下选项:

  • 验证规则被视为业务逻辑的一部分。然后,如果用户的ID已经存在,则在服务层抛出异常。这样,您将在一个事务中处理所有事务
  • 验证规则不被认为是业务逻辑的一部分。在验证bean上使用服务方法。这将为所有验证提供一个公共场所
    在演示应用程序中,您可以执行看起来更简单的操作。但您也问过我,在从验证bean调用服务方法时有一些注意事项

    主要问题是,您将在服务层中输入两次,一次用于验证,一次用于实际处理。这就是通常管理事务的地方。因此,您可以在同一请求中打开两个不同的事务,而不是仅打开一个。如果您的应用程序或数据库可能负载过重,则应考虑这一点


    当然,如果您在整个请求过程中都有事务,例如在视图模式中打开会话,则这不再是一个问题。

    用户授权代码应该与数据验证代码分开。通常,我会同意。但这是一个演示应用程序,所以我很高兴稍微改变一下规则。无论如何,这只是一个演示应用程序。与其说是业务逻辑,不如说是验证输入。但是测试用户是否存在的方法将是一个服务方法(服务方法将调用DAO方法)。我计划从处理输入的验证器调用它。代码还没有编写,所以我现在不能说。但是你给了我一些很好的建议。