Java Spring启动应用程序中的请求正文验证失败

Java Spring启动应用程序中的请求正文验证失败,java,spring-boot,validation,Java,Spring Boot,Validation,我希望我的RESTAPI在存在异常和参数类型不匹配时抛出异常。下面是我的请求对象 public class MyReqDto { @NotNull @Pattern(regexp = "[^a-zA-Z0-9]", message = "Invalid characters found in subscriberType") private String subscriberType; @NotNull @Pattern(regexp = "^[a-zA

我希望我的RESTAPI在存在异常和参数类型不匹配时抛出异常。下面是我的请求对象

public class MyReqDto {
    @NotNull
    @Pattern(regexp = "[^a-zA-Z0-9]", message = "Invalid characters found in subscriberType")
    private String subscriberType;

    @NotNull
    @Pattern(regexp = "^[a-zA-Z0-9]", message = "Invalid characters found in caseId")
    private String caseId;
在上述情况下,只要请求违反此字符串要求(为subscriberType提供一个整数值),就会引发en异常。此外,我还需要针对无效字符(如*、-)对它们进行验证。为此,我使用了@Pattern注释

我的控制器看起来像这样

@Controller
public class MyController {

    @RequestMapping(value = "/my-controller/traceId/{Trace_ID}", method = RequestMethod.POST, produces =
            "application/json")
        public ResponseEntity<Object> startWork(@PathVariable Optional<String> Trace_ID,
                @Valid @RequestBody MyReqDto myReqDto)
            throws Exception {
@控制器
公共类MyController{
@RequestMapping(value=“/my controller/traceId/{Trace_ID}”,method=RequestMethod.POST,生成=
“应用程序/json”)
公共响应启动网络(@PathVariable可选跟踪ID,
@有效@RequestBody MyReqDto MyReqDto)
抛出异常{
我正在使用@Valid注释,并且我已经为hibernate验证程序包含了maven依赖项

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>4.0.2.GA</version>
</dependency>

<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>1.0.0.GA</version>
</dependency>


org.hibernate
休眠验证器
4.0.2.GA
javax.validation
验证api
1.0.0.GA
但问题是,它不验证我的输入并接受subscriberType和caseId的整数值


非常感谢您在这方面提供的任何帮助。

不确定验收标准。我想您希望得到以下模式

正则表达式模式

  • [A-Za-z]*
    匹配字母和空格

  • “*[^0-9].*”
    匹配数字


验证模式的问题在我的正则表达式中。下面解决了该问题

public class MyReqDto {
    @NotNull
    @Pattern(regexp = "^[a-zA-Z0-9]", message = "Invalid characters found in subscriberType")
    private String subscriberType;

    @NotNull
    @Pattern(regexp = "^[a-zA-Z0-9]", message = "Invalid characters found in caseId")
    private String caseId;
我注意到,默认情况下,将请求体参数声明为字符串,并为其提供一个整数值可以正常工作,不会引发异常。但是,如果我们将请求体参数声明为整数并为其提供一个字符串值,它将引发异常


简单的caseId=“123”caseId=123在我的请求正文中具有相同的效果,因为caseId被声明为字符串。

什么是可接受的字符集?您的正则表达式接受数字不是很清楚。嗨,伙计们,这些参数可以有数字和字符的组合,但不能有像*、-、>这样的符号,谢谢您的回复。正则表达式模式似乎可以。但是我的问题仍然存在我认为问题出在正则表达式中,注释对我来说似乎是正确的