Поиск помощи с Spring валидацией данных для правильной обработки ошибок проверки:
Я настолько смущен документами относительно spring -data-rest validation здесь: 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 dao
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> {
}
POST Запрос на api/Компании:
{
"address" : "One Microsoft Way",
"city" : "Redmond",
"country" : "USA",
"email" : "[email protected]",
"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,]\nList нарушений ограничений: [\n\tConstraintViolationImpl {интерполяцияMessage = 'не может быть null", propertyPath = name, rootBeanclass= class com.domain.Company, messageTemplate = '{javax.validation.constraints.NotNull.message}'}\n] "," путь ":" /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>