Old Spring 和电子邮件验证

问题描述 投票:0回答:1

对于具有 Java 1.8_431 的中间件,有一个 Spring 应用程序

<springframework.version>4.3.1.RELEASE</springframework.version>

我有一个模型,其中有一个我必须验证的电子邮件字段,它由以下代码表示:

import javax.validation.constraints.Email;

/**
 * The Class RegForm.
 */
public class RegForm {
....


    /** The email. */
    @Email(message = "Insert a valid email")
    private String email;

//getter and settser
}

该应用程序的POM组成:

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.1.1.Final</version>
</dependency>

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version> <!-- Versione 2.0 o superiore -->
</dependency>

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.0</version> <!-- Necessario per l'Expression Language -->
</dependency>

我使用这个模型的Spring控制器是:

//many imports
import javax.validation.Valid;
....

@Controller
@RequestMapping("/reg")
public class RegController {
    
    @RequestMapping(value = "/index", method = RequestMethod.GET)
    public String index(@ModelAttribute("regForm") @Valid @RequestBody RegForm  regForm,
            BindingResult result, Model model, final RedirectAttributes redirectAttributes, HttpServletRequest req)
            throws AcceleratoreException {
......
}

当我启动应用程序并调用此 API 时,服务器响应状态 500 且日志显示:

ServletException 的根本原因。
javax.validation.UnexpectedTypeException:HV000030:找不到验证类型“java.lang.String”的约束“javax.validation.constraints.Email”的验证器。检查“电子邮件

”的配置
java spring validation spring-mvc javax-validation
1个回答
0
投票

我认为您使用的是相当旧版本的休眠验证器。

您是否需要使用

org.hibernate.validator.constraints.Email
(这在
jakarta.validation.constraints.Email
的后续版本中已弃用)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.