2

我正在创建一个 Java 桌面应用程序,并且想知道我应该如何处理验证。

我在控制器中收到带有注册信息(用户名、密码……)的地图。现在我想验证地图中的信息并显示验证中发生的所有错误。所以我想在一个名为验证的新包中创建一个自定义类 RegistrationValidation。然后让这个类返回一个有错误的列表。但我一直在想...

我一直都知道验证应该在正确的模型类中完成,是在制作一个违反 MVC 原则的验证类吗?

我应该在哪里调用这个验证类,从我的控制器还是从我的模型?

我应该如何调用验证类?(使方法静态,使其成为单例,只需在控制器/模型或其他中创建它的实例?)

有没有更好的解决方案来提取验证?

4

1 回答 1

0

好问题。如果你有一个 Map 你可以很容易地从它创建 java bean。这个 java bean 将是您的模型,它将具有某种validate返回错误列表的公共方法(使用键作为属性名称和错误消息的错误映射也可能有效)。

当然,验证的某些方面不能仅使用 bean 数据进行验证(例如,如果注册页面的验证,您需要调用其他一些服务以确保用户名未被使用)。在这种情况下,您可以将额外的参数传递给validate(服务等)。

流程可能是下一个:在控制器中获取数据,创建模型(java bean),对其调用验证,返回错误列表(如果有)以查看,或转发到下一个视图。这是 MVC 应用程序非常典型的工作流程。

哦,不要做任何静态的东西,不要让它成为单例。如果您在控制器之间共享验证,只需将您的验证器注入其中。查看弹簧框架。它可能对你有用。

于 2012-03-24T13:47:18.713 回答