1

我正在尝试验证作为方法参数一部分的 emailId 和其余端点的查询参数。在方法参数中使用 @Pattern 注释不起作用。有没有更好的方法来使用注释来处理这种情况

public EmailResponse isEmailRegistered(HttpServletRequest request,
         @RequestParam("emailId") @Valid @Pattern(message = "Email is invalid", regexp = "^.+@.+\\..+$") final String emailId) 

我尝试了上述方法,但它不起作用。因为电子邮件 ID 字段是查询参数,所以我无法将其包装在对象中并在其上添加验证器。

我尝试将它包装在一个包装器对象中,如下所示,但没有运气

public EmailResponse isEmailRegistered(HttpServletRequest request,
         @RequestParam("emailId") @Valid final EmailIdWrapper emailId, final BindingResult bindingResult) 

EmailId 包装类

public class EmailIdWrapper implements Serializable{

@NotNull(message = "Email Id is required")
@Size(min = 5, max = 50, message = "Invalid length for email")
@Pattern(message = "Invalid email id", regexp = "^.+@.+\\..+$")
private String emailId;

public String getEmailId() {
    return emailId;
}

public void setEmailId(String emailId) {
    this.emailId = emailId;
}

}

在这种情况下,我得到一个 conversionnotsupported 错误,这很明显,因为 url 参数是一个字符串并且我正在分配给一个对象。

4

1 回答 1

1

我知道这有点晚了,但你试过把

@已验证

在控制器类级别?

于 2020-02-14T10:59:52.000 回答