我使用的是Hibernate Validator5.x和javax Validation1.x(由于一些原因,无法升级)。这个场景可以在hibernate Validator6.x和Validation2.x中工作
在违反约束时,Validator会启动并显示正确的错误响应,但同时它会执行REST方法体。
@POST
@Path("/book")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createBook(@Valid Book book) {
System.out.println("Book "+book);
return Response.status(Response.Status.OK).entity(book).build();
}
@ValidName
public class Book {
private String name;
private Author author;
private double price;
public Book() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Author getAuthor() {
return author;
}
public void setAuthor( Author author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
@Constraint(validatedBy = { NameValidator.class })
@Target({ METHOD, FIELD, PARAMETER, TYPE })
@Retention(RUNTIME)
public @interface ValidName {
String message() default "Author name is mandatory";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
@Provider
public class NameValidator implements ConstraintValidator<ValidName, Book>{
@Override
public boolean isValid(Book book, ConstraintValidatorContext context) {
if(book == null) return true;
if(book.getName().equals("")) {
return true;
}else {
return !(book.getAuthor().getName().equals(""));
}
}
}
12:53:31,971 INFO [stdout] (default task-1) Book com.arfat.entity.Book@3238e1e1
{
"data": {},
"messages": [
"1. Author name is mandatory"
],
"status": "ERROR-Bad Request"
}
我搜索了官方文件,但没有帮助。
类路径中有一个jar正在处理SessionContext。它上面有@Stateless注释。由于某种原因,它允许绕过验证。我不能删除这个jar,因为它是web应用程序所需要的,我正在相同的路径上部署reast-easy。所以需要找个工作
我正在使用Spring和Hibernate,我得到了这个例外。以下是我试图获得的:我有User和UserSettings类,它们以OneToMany和ManyToOne注释为界,如下所示: 现在,我想为用户添加设置,我是这样做的: 问题来了:UserSettings中的用户持有旧设置和新设置的集合(设置,我刚刚创建并想要添加),但旧设置持有用户的集合,其中没有新设置。我想这就是为什么我会遇到异常,
我想通过使用Spring Boot和Hibernate Validator进行字段验证,而不保存数据。
问题内容: 我有一个带有优先级列的“任务”表,该表具有唯一的约束。 我试图交换两行的优先级值,但我一直违反约束。我在类似情况下的某个地方看到了该语句,但MySQL却没有。 这将导致错误: 是否可以在MySQL中完成此操作而不使用伪造的值和多个查询? 编辑: 这是表的结构: 问题答案: 是否可以在MySQL中完成此操作而不使用伪造的值和多个查询? 不 (我想不到的)。 问题是MySQL如何处理更新。
帮助我如何解决这个问题?我正在使用java进行NetSuite集成,我将所需的jar文件添加到我的项目中。添加jboss 6.1.0中部署的jar后。添加此jar后org.apache.sling.commons.log-2.0.6.jar获得以下异常。这是我的堆栈跟踪。
我有一个JavaWeb7项目,在该项目中,我希望在每个事件上,直接在支持bean中管理的实体实例上编写JSF组件值。只要添加一个JSR303验证约束,就可以很好地工作,比如在实体属性之一上添加。只要违反约束,就不再在具有约束的属性上设置值。没有根据NetBeans调试器调用setter;另一个属性工作很好,这使我相信我已经隔离了问题。我想在我想要的时候执行验证,因此,如果我想要的话,可以设置无效的
我有一个MathematicsAnswer引用的实体数学。如果对数学执行post请求,我会得到一个例外,即MathsAnswer上的字段不能为空。但我确实在球场上跳了起来。拜托,我需要这个解决方案<代码>java.sql。SQLIntegrityConstraintViolationException:列'question_id'不能为空。 sql架构: 实体类: MathsAnswers.jav