有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

验证程序的JavaBean验证不起作用为什么?

我正在通过在CDI-Bean中注入Validator来尝试Bean验证

这就是为什么我编写了一个servlet来注入validator属性。问题是我得到了错误的结果。例如,它说namesurname属性不允许为空,尽管我用常规名称和姓氏设置了它们

我做错什么了吗

这是我的Servlet:

@WebServlet
public class BeanValidationServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    @Inject
    private Validator validator;
    @Inject
    private WorkEmployee workEmployee;

    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        PrintWriter writer = response.getWriter();

        workEmployee.getAdresse().setPostalCode("8888");
        workEmployee.getAdresse().setStreet("Washington Street");
        workEmployee.getAdresse().setStreetNumber(98);
        workEmployee.getAdresse().setHome("Philadeplphia");
        workEmployee.setEmployeeId(12);
        workEmployee.setName("John");
        workEmployee.setSurname("Doeuuu");
        writer.print("<h1> Surname:" + workEmployee.getSurname() + "<h1>");
        Set<ConstraintViolation<WorkEmployee>> constraintViolations = validator
                .validate(workEmployee);
        for (ConstraintViolation<WorkEmployee> violation : constraintViolations) {
            writer.print("<h1>" + violation.getPropertyPath() + ": "
                    + violation.getMessage() + "<h1>");
            writer.print("<h1>" + violation.getRootBean() + "<h1>");
            writer.print("<h1>-------------------------------<h1>");
        }

        Set<ConstraintViolation<Adress>> constraintViolations2 = validator
                .validate(workEmployee.getAdresse());
        for (ConstraintViolation<Adress> violation : constraintViolations2) {
            writer.print("<h1>" + violation.getPropertyPath() + ": "
                    + violation.getMessage() + "<h1>");
            writer.print("<h1>" + violation.getRootBean() + "<h1>");
            writer.print("<h1>-------------------------------<h1>");
        }
    }
}

这就是我的CDI bean:

{}-类:

@RequestScoped
public class Worker implements WorkEmployee{

    @NotNull
    private String name;
    @NotNull
    @Size(min=5,max=15)
    @Pattern(regexp="Doe")
    private String surname;
    @Min(5)
    @Max(12)
    private int employeeId;

    @Inject
    @Valid
    private Adress adresse;

    @Override
    public String getName() {
        return name;
    }

    @Override
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String getSurname() {
        return surname;
    }

    @Override
    public void setSurname(String surname) {
        this.surname = surname;
    }

    @Override
    public int getEmployeeId() {
        return employeeId;
    }

    @Override
    public void setEmployeeId(int employeeId) {
        this.employeeId = employeeId;
    }

    @Override
    public Adress getAdresse() {
        return adresse;
    }

    @Override
    public void setAdresse(Adress adresse) {
        this.adresse = adresse;
    }
}

{}-类:

@RequestScoped
public class Adress {

@Pattern(regexp="^47269$")
private String postalCode;
@NotNull
private String street;
@NotNull
@Min(15)
@Max(99)
private int streetNumber;
@NotNull
@Size(max=25)
private String home;

public String getPostalCode() {
    return postalCode;
}

public void setPostalCode(String postalCode) {
    this.postalCode = postalCode;
}

public String getStreet() {
    return street;
}

public void setStreet(String street) {
    this.street = street;
}

public int getStreetNumber() {
    return streetNumber;
}

public void setStreetNumber(int streetNumber) {
    this.streetNumber = streetNumber;
}

public String getHome() {
    return home;
}

public void setHome(String home) {
    this.home = home;
}
}

共 (0) 个答案