【发布时间】:2016-05-21 07:44:35
【问题描述】:
寻求有关正确处理验证错误的 Spring 数据休息验证方面的帮助:
我对这里有关 spring-data-rest 验证的文档感到非常困惑:http://docs.spring.io/spring-data/rest/docs/current/reference/html/#validation
我正在尝试正确处理尝试保存新公司实体的 POST 调用的验证
我得到了这个实体:
@Entity
public class Company implements Serializable {
@Id
@GeneratedValue
private Long id;
@NotNull
private String name;
private String address;
private String city;
private String country;
private String email;
private String phoneNumber;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "company")
private Set<Owner> owners = new HashSet<>();
public Company() {
super();
}
...
还有这个 RestResource 道
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.rest.core.annotation.RestResource;
import com.domain.Company;
@RestResource
public interface CompanyDao extends PagingAndSortingRepository<Company, Long> {
}
对 api/Companies 的 POST 请求:
{
"address" : "One Microsoft Way",
"city" : "Redmond",
"country" : "USA",
"email" : "info@microsoft.com",
"phoneNumber" : "(425) 703-6214"
}
当我发出一个带有空名称的 POST 时,我得到以下带有 httpcode 500 的休息响应
{"timestamp":1455131008472,"status":500,"error":"Internal Server Error","exception":"javax.validation.ConstraintViolationException","message":"类 [com. domain.Company] 组 [javax.validation.groups.Default, ]\n 约束违规列表:[\n\tConstraintViolationImpl{interpolatedMessage='可能不为空', propertyPath=name, rootBeanClass=class com.domain .Company, messageTemplate='{javax.validation.constraints.NotNull.message}'}\n]","path":"/api/companies/"}
我尝试创建以下 bean,但它似乎从来没有做任何事情:
@Component(value="beforeCreateCompanyValidator")
public class BeforeCreateCompanyValidator implements Validator{
@Override
public boolean supports(Class<?> clazz) {
return Company.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object arg0, Errors arg1) {
System.out.println("xxxxxxxx");
}
}
即使它确实有效,它如何帮助我使用正确的 http 代码和可理解的 json 响应来开发更好的错误响应?
很迷茫
使用 1.3.2.RELEASE
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
【问题讨论】:
标签: spring-boot spring-data-rest spring-rest