我目前正在开发一个第一次使用DTO的应用编程接口。到目前为止,我已经使用了Spring的表单验证和javax.validation
。
所以我的问题是,是否有一种方法可以将DTO和“表单”验证结合起来。让我解释一下自己:假设我有一个登录服务和另一个注册服务。在注册服务中,我们有:姓名、密码和电子邮件,其中三个必须填写。至于登录服务,只有电子邮件和密码必须填写。所以我们会有这样的东西:
private String name;
private String password;
private String email;
到目前为止,我所做的是为每个请求(表单)创建一个POJO,然后使用诸如@NotNull
之类的注释,但是现在在我现在所在的项目中使用DTO,它们只是具有相同的属性且没有约束的相同DTO和业务对象。
我怎么能做我通常做的事情?检查控制器中必须为空的字段对我来说看起来有点脏,我不能只在UserDTO
中添加@NotNull
之类的东西,因为在两个例子中,我说我必须在登录时发送name
,尽管该服务不需要它。
那么,我怎样才能把这两件事结合起来呢?这是不可能的还是有更好的方法?
谢谢
使用组进行验证与javax.validation
完成了工作,我遵循这个问题的答案(安德鲁建议),然后我只需要把每个字段我想有不同的规则在不同的组。
我假设您使用两个独立的控制器来进行登录和注册请求。如果是这样的话,那么你可以好好利用org。springframework。验证。验证程序接口:
@Component("registrationValidator")
public class RegistrationValidatorImpl implements Validator {
@Override
public boolean supports(final Class<?> aClass) {
}
@Override
public void validate(final Object o, final Errors errors) {
}
}
在控制器中创建RegistrationValidatorImpl和LoginValidatorIml以及@Autowire。
validator的用法很简单:
invokeValidator(registrationValidator, someDTO, errors);
if (errors.hasErrors()) {
return new ResponseEntity(HttpStatus.BAD_REQUEST); //or whatever logic here
}
控制器方法签名应与此类似:
@RequestMapping(value = "/register", method = RequestMethod.POST)
public ResponseEntity register(@RequestBody final SomeDTO someDTO, final HttpServletRequest request, final Errors errors) {}
对于一个控制器,我假设您有不同的方法映射到登录和注册请求。您可以在控制器中@Autowire两个验证器,并在单独的方法中使用它们。
我需要一个用户管理服务为我的Spring启动项目。我一般了解DTO(数据传输对象)在Spring的使用。但是当我考虑设计服务时,我只对一个“用户”模型使用多个DTO,如UserDTO、注册用户DTO、更新用户DTO、管理用户DTO...UserDTO就像一个只读数据(带有用户名、电子邮件、姓名的输出数据),用于显示用户信息。但是注册用户DTO就像一个输入数据(带密码,确认密码为新用户创建密码),用
本文向大家介绍Validform表单验证总结篇,包括了Validform表单验证总结篇的使用技巧和注意事项,需要的朋友参考一下 近期项目里用到了表单的验证,选择了Validform_v5.3.2。 先来了解一下一些基本的参数: 通用表单验证方法: Demo: 下面是demo的下载地址的链接,有需要的可以下载。 demo下载地址 以上所述是小编给大家介绍的Validform表单验证总结篇,希望对大家
问题内容: 是否可以为同一REST服务设置基本身份验证和表单登录?我想让登录用户登录后以及通过运行命令行通过网络浏览器触发此服务。 现在,我已经看到了这篇文章:的基于基本和基于表单的身份验证, 但是与我所使用的略有不同试图做。有没有办法用弹簧设置这个?我现在所拥有的是: 唯一的问题是,当hostname.com/index或被hostname.com/调用时,它不会重定向到我的登录页面,而是弹出窗
本文向大家介绍AngularJS实现表单手动验证和表单自动验证,包括了AngularJS实现表单手动验证和表单自动验证的使用技巧和注意事项,需要的朋友参考一下 AngularJS的表单验证大致有两种,一种是手动验证,一种是自动验证。 一、手动验证 所谓手动验证是通过AngularJS表单的属性来验证。而成为AngularJS表单必须满足两个条件: 1、给form元素加上novalidate="no
问题内容: 完全陷入了困境-PHP的新手,并进行了简单的表单提交(创建帐户页面)以发送到mySQL数据库,因此对问题的宽恕表示歉意。 我不确定在发送数据之前如何正确验证和清除数据。但是我在插入数据库时使用的是PDO和占位符,所以我认为这一方面已经涵盖了。 这被发送到一个名为createaccount.php的单独的php文件,该文件运行用户名检查,如果成功运行,则将一个字段发送到我的dbHan
当尝试验证表单(获取请求)时,我知道Result绑定,当尝试验证请求正文时,我也知道@Valid,但我不知道如何验证multipartForm Request参数。当我将json转换为对象时,我有一个带有请求参数的多部分表单,其中包含我的User.class.的json字符串表示形式, 如何检查user类中的参数是否满足要求,例如(电子邮件中有'@'或名字没有数字值)? 这是我的代码,控制器: 这