我正在尝试验证emailId,它是方法参数的一部分,是其余端点的Query参数。在method参数中使用@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 Wrapper类
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;
}
}
在这种情况下,我得到一个转换不支持的错误,这是非常明显的,因为url参数是一个字符串,我正在分配给一个对象。
答案 0 :(得分:1)
我知道有点晚了,但是 您是否尝试过
@已验证
在控制器类级别?