在java hv000030中:找不到约束“javax.validation.constraints.email”的验证器

rkttyhzu  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(558)

我试图发送html电子邮件通知时,用户提交一个表单,但我得到一个错误。你能看看吗?

  1. There was an unexpected error (type=Internal Server Error, status=500).HV000030: No validator could be found for constraint 'javax.validation.constraints.Email' validating type 'java.lang.String'. Check configuration for 'email'

javax.validation.unexpectedtypeexception:hv000030:找不到约束“javax.validation.constraints.email”验证类型“java.lang.string”的验证程序。检查“电子邮件”的配置
模型:

  1. import javax.validation.constraints.Email;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. @Data
  6. @AllArgsConstructor
  7. @NoArgsConstructor
  8. public class MailRequest {
  9. private String name;
  10. @Email
  11. private String to;
  12. @Email
  13. private String from;
  14. private String subject;
  15. public MailRequest(String to) {
  16. this.name = "Some name";
  17. this.to = to;
  18. this.from = "example@gmail.com";
  19. this.subject = "Confirmation";
  20. }
  21. import lombok.AllArgsConstructor;
  22. import lombok.Data;
  23. import lombok.NoArgsConstructor;
  24. @Data
  25. @AllArgsConstructor
  26. @NoArgsConstructor
  27. public class MailResponse {
  28. private String message;
  29. private boolean status;
  30. public String getMessage() {
  31. return message;
  32. }
  33. public void setMessage(String message) {
  34. this.message = message;
  35. }
  36. public boolean isStatus() {
  37. return status;
  38. }
  39. public void setStatus(boolean status) {
  40. this.status = status;
  41. }

}

  1. import org.springframework.context.annotation.Configuration;
  2. import org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean;
  3. @Configuration
  4. public class EmailConfig {
  5. public FreeMarkerConfigurationFactoryBean factoryBean() {
  6. FreeMarkerConfigurationFactoryBean bean = new FreeMarkerConfigurationFactoryBean();
  7. bean.setTemplateLoaderPath("classpath:/templates");
  8. return bean;
  9. }
  10. }
  11. import java.io.IOException;
  12. import java.nio.charset.StandardCharsets;
  13. import java.util.Map;
  14. import javax.mail.MessagingException;
  15. import javax.mail.internet.MimeMessage;
  16. import javax.validation.UnexpectedTypeException;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.core.io.ClassPathResource;
  19. import org.springframework.mail.javamail.JavaMailSender;
  20. import org.springframework.mail.javamail.MimeMessageHelper;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
  23. import com.hostmanagement.email.model.MailRequest;
  24. import com.hostmanagement.email.model.MailResponse;
  25. import freemarker.template.Configuration;
  26. import freemarker.template.Template;
  27. import freemarker.template.TemplateException;
  28. @Service
  29. public class EmailService {
  30. @Autowired
  31. private JavaMailSender sender;
  32. @Autowired
  33. private Configuration config;
  34. public MailResponse sendEmail(MailRequest request, Map<String, Object> model) {
  35. MailResponse response = new MailResponse();
  36. MimeMessage message = sender.createMimeMessage();
  37. try {
  38. // set mediaType
  39. MimeMessageHelper helper = new MimeMessageHelper(message, MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED,
  40. StandardCharsets.UTF_8.name());
  41. Template t = config.getTemplate("email-template.ftl");
  42. String html = FreeMarkerTemplateUtils.processTemplateIntoString(t, model);
  43. helper.setTo(request.getTo());
  44. helper.setText(html, true);
  45. helper.setSubject(request.getSubject());
  46. helper.setFrom(request.getFrom());
  47. sender.send(message);
  48. response.setMessage("mail send to : " + request.getTo());
  49. response.setStatus(Boolean.TRUE);
  50. } catch (UnexpectedTypeException | MessagingException | IOException | TemplateException e) {
  51. response.setMessage("Mail Sending failure : "+e.getMessage());
  52. response.setStatus(Boolean.FALSE);
  53. }
  54. return response;
  55. }

这是在我的主服务中,我从控制器调用这个方法。

  1. public MailResponse sendConfirmationEmail(String email) throws UnexpectedTypeException {
  2. Map<String, Object> modelsMap = new HashMap<>
  3. modelsMap.put("name", "Tural");
  4. modelsMap.put("Location", "Baku");
  5. MailRequest mailRequest = new MailRequest(email);
  6. return emailservice.sendEmail(mailRequest, modelsMap);
  7. }

我正在从我的控制器向我的方法传递电子邮件地址:

  1. @Email @RequestParam("email") String email,
  2. DAOServiceImpl.sendConfirmationEmail(email);

我做了一些研究,并在pom.xml中升级了hibernate验证器,但是没有工作

  1. <dependency>
  2. <groupId>org.hibernate</groupId>
  3. <artifactId>hibernate-validator</artifactId>
  4. <version>6.0.11.Final</version>
  5. </dependency>

谢谢你的帮助!!

trnvg8h3

trnvg8h31#

这个问题的解决方案是在annotation@email中添加一条消息。

  1. @Email(message = "Email should be valid")

取决于您使用的实现此属性是否是必需的。

相关问题