Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Hibernate自定义约束错误路径_Java_Spring_Hibernate_Constraints - Fatal编程技术网

Java Spring Hibernate自定义约束错误路径

Java Spring Hibernate自定义约束错误路径,java,spring,hibernate,constraints,Java,Spring,Hibernate,Constraints,我创建了一个hibernate自定义约束来匹配字段,但无法在相应的屏幕上显示错误 FieldMatch package org.andreadorigo.webapp.validators.costraints; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.TYPE; import static java.lang.a

我创建了一个hibernate自定义约束来匹配字段,但无法在相应的屏幕上显示错误 FieldMatch

package org.andreadorigo.webapp.validators.costraints;

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.Payload;

import org.andreadorigo.webapp.validators.FieldMatchValidator;

@Target({TYPE, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = FieldMatchValidator.class)
@Documented
public @interface FieldMatch
{
    String message() default "{constraints.fieldmatch}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    /**
     * @return The first field
     */
    String first();

    /**
     * @return The second field
     */
    String second();

    /**
     * Defines several <code>@FieldMatch</code> annotations on the same element
     *
     * @see FieldMatch
     */
    @Target({TYPE, ANNOTATION_TYPE})
    @Retention(RUNTIME)
    @Documented
            @interface List
    {
        FieldMatch[] value();
    }
}
FieldMatchValidator

package org.andreadorigo.webapp.validators;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

import org.andreadorigo.webapp.validators.costraints.FieldMatch;
import org.apache.commons.beanutils.PropertyUtils;

public class FieldMatchValidator implements ConstraintValidator<FieldMatch, Object>
{
    private String firstFieldName;
    private String secondFieldName;

    @Override
    public void initialize(final FieldMatch constraintAnnotation)
    {
        firstFieldName = constraintAnnotation.first();
        secondFieldName = constraintAnnotation.second();
    }

    @Override
    public boolean isValid(final Object value, final ConstraintValidatorContext context)
    {
        try
        {
            final Object firstObj = PropertyUtils.getProperty(value, firstFieldName);
            final Object secondObj = PropertyUtils.getProperty(value, secondFieldName);

            return firstObj == null && secondObj == null || firstObj != null && firstObj.equals(secondObj);
        }
        catch (final Exception ignore)
        {
            // ignore
        }
        return true;
    }
}
个人类

constraints.fieldmatch=I campi richiesti non combaciano
constraints.fieldmatch.confirmEmail=Le mail inserite non coincidono
constraints.fieldmatch.retypePassword=Le password inserite non coincidono
package org.andreadorigo.webapp.entities.abstracts;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Transient;
import javax.validation.constraints.Size;

import org.andreadorigo.webapp.validators.costraints.FieldMatch;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;

@MappedSuperclass
@FieldMatch.List({
    @FieldMatch(first = "password", second = "retypePassword"),
    @FieldMatch(first = "email", second = "confirmEmail")
})
public abstract class Person {
.
.
.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<spring:message code="label.test"/>

<form:form method="post" action="/user/add/" commandName="user" >  
    <table>
        <tr>
            <td>Email</td>
            <td><form:input path="email" /></td>
            <td><form:errors path="email"></form:errors></td>
        </tr>
        <tr>
            <td>Confirm Email</td>
            <td><form:input path="confirmEmail" /></td>
            <td><form:errors path="confirmEmail"></form:errors></td>
        </tr>
        <tr>
            <td>Password</td>
            <td><form:input path="password" /></td>
            <td><form:errors path="password"></form:errors></td>
        </tr>
        <tr>
            <td>Retype Password</td>
            <td><form:input path="retypePassword" /></td>
            <td><form:errors path="retypePassword"></form:errors></td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="Add"/>
            </td>
        </tr>
    </table>
</form:form>

</body>
</html>
}

userForm.jps

constraints.fieldmatch=I campi richiesti non combaciano
constraints.fieldmatch.confirmEmail=Le mail inserite non coincidono
constraints.fieldmatch.retypePassword=Le password inserite non coincidono
package org.andreadorigo.webapp.entities.abstracts;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Transient;
import javax.validation.constraints.Size;

import org.andreadorigo.webapp.validators.costraints.FieldMatch;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;

@MappedSuperclass
@FieldMatch.List({
    @FieldMatch(first = "password", second = "retypePassword"),
    @FieldMatch(first = "email", second = "confirmEmail")
})
public abstract class Person {
.
.
.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<spring:message code="label.test"/>

<form:form method="post" action="/user/add/" commandName="user" >  
    <table>
        <tr>
            <td>Email</td>
            <td><form:input path="email" /></td>
            <td><form:errors path="email"></form:errors></td>
        </tr>
        <tr>
            <td>Confirm Email</td>
            <td><form:input path="confirmEmail" /></td>
            <td><form:errors path="confirmEmail"></form:errors></td>
        </tr>
        <tr>
            <td>Password</td>
            <td><form:input path="password" /></td>
            <td><form:errors path="password"></form:errors></td>
        </tr>
        <tr>
            <td>Retype Password</td>
            <td><form:input path="retypePassword" /></td>
            <td><form:errors path="retypePassword"></form:errors></td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="Add"/>
            </td>
        </tr>
    </table>
</form:form>

</body>
</html>

在此处插入标题
电子邮件
确认电子邮件
密码
重新输入密码

但是,我只能在使用

时才能收到错误消息。我认为您尚未完成您的问题…我的问题是:如何在相应字段下显示自定义costraints错误?例如,在retypePassword文件下,如果密码不匹配,则显示“您的密码不匹配”??