検証エラーの適切な取り扱いに関する春データ、残りの検証といくつかの助けを探して:春データ休憩検証混乱
私はここに春・データ・休息妥当性に関するドキュメントを持つので、混乱している:http://docs.spring.io/spring-data/rest/docs/current/reference/html/#validation
@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();
}
:私は、私は、このエンティティを持って適切に新会社エンティティに
を保存しようとPOST呼び出しの検証に対処しようとしていますAPI /企業へ
...
このRestResource DAOimport 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リクエスト:
{
"address" : "One Microsoft Way",
"city" : "Redmond",
"country" : "USA",
"email" : "[email protected]",
"phoneNumber" : "(425) 703-6214"
}
私がnullの名前のPOSTを発行すると、私は次の休みの応答を取得httpコード500
{"タイムスタンプ":1455131008472、 "ステータス":500、 "エラー": "内部サーバーエラー"、 "例外": "javax.validation.ConstraintViolationException"、 "混乱グループの持続時間中にクラス[com.domain.Company]の検証が失敗しました[nu \ tConstraintViolationImpl {interpolatedMessage = 'nullではない可能性があります' \\] "、" 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>
スーパーは、ところで自動的にとにかくあり\t @Override \t公共ボイド検証(Objectオブジェクト、エラー・エラー){ \t \t \tを:JSR 303の注釈は、私がここでやっている '手動' のものの代わりにチェックインしました210会社名=(会社)オブジェクト; \t \t \t \t(StringUtils.isEmpty(company.getName())){ \t \t \t errors.rejectValue場合( "名前"、 "name.required"、 "名前フィールドが欠落しています")。例えば - 私はあなたが休止状態-バリデータを持っている場合は、クラスパス上であなたにもこれらの制約のアノテーションを使用することができるはずだと思う \t \t} \t \t \t \t \t} – 1977
'org.hibernate.validator.constraints.NotEmpty' –
私はBeforeSaveCompanyValidatorを追加していないので、あなたのソリューションがまだ作成と更新のために働いていたのか疑問に思っていました。 BeforeCreateCompanyValidatorまたはBeforeUpdateCompanyValidatorは必要ありません。なぜなら、LocalValidatorFactoryBean構成Beanはそれをすべて処理するからです。上記の元の投稿に新しいバージョンのクラスを投稿します。それは本当にうまくいくが、まだちょっと混乱しているようだ... – 1977