【问题标题】:Spring annotation wrapper for controller parameter控制器参数的 Spring 注释包装器
【发布时间】:2018-06-19 12:08:03
【问题描述】:

我有带有方法的 RestController:

@CrossOrigin
@PostMapping("/change_password")
@ApiOperation(value = "Change user password")
public AbstractResponseConfirmationDTO changePassword(@Valid @RequestBody ChangePasswordDTO passwordDTO) {
    return authorizedEmployeeServiceImpl.changePassword(passwordDTO);
}

这里我有@Valid 和@RequestBody 注释。如何将它们包装到一个注释中?我希望它是这样的:

@CrossOrigin
@PostMapping("/change_password")
@ApiOperation(value = "Change user password")
public AbstractResponseConfirmationDTO changePassword(@AuthorizedRequestBody ChangePasswordDTO passwordDTO) {
    return authorizedEmployeeServiceImpl.changePassword(passwordDTO);
}

@RequestBody 和@Valid 不能应用于类型。

【问题讨论】:

    标签: spring rest validation http request


    【解决方案1】:

    你不能这样做。要使用其他注释创建注释,注释应该是 ElementType TYPE

    @Valid@RequestBody 没有 ElementType.TYPE

    @Target({ METHOD, FIELD, CONSTRUCTOR, PARAMETER })
    @Retention(RUNTIME)
    public @interface Valid {
    }
    

    这意味着您只能在方法、字段、构造函数和参数上使用此注解。不在班级水平。

    @Target(ElementType.PARAMETER)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface RequestBody {
    }
    

    这只能在参数级别使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 2020-01-20
      • 1970-01-01
      • 2015-11-15
      • 2014-04-17
      • 2010-12-30
      • 1970-01-01
      相关资源
      最近更新 更多