저는 Play Framework를 사용하고 있으며 컨트롤러 작업에서 양식으로 모델을 업데이트하는 일반적인 경우가 있습니다. 그러나 모델의 모든 속성을 포함하는 양식이있는 경우이 작업이 단지 작동하기 때문에 개념의 이해를위한 몇 가지 문제점을 알고 있습니다. 부분 양식 만있는 경우 (예 : 사용자 모델의 암호 만 편집하면이 메서드는 모델의 다른 속성을 null로 설정하기 때문에 모델을 파괴합니다. 그 문제에 대한 "공식적인"해결책이 있습니까? Play는 기존 속성 만 업데이트합니까?프레임 워크 처리 부분 양식
public static Result update(Long id) {
Model model = Model.findById(id);
Form<Model> filledForm = modelForm.bindFromRequest();
if (filledForm.hasErrors()) {
return badRequest(edit.render(filledForm));
} else {
model.update();
flash("message", "Created new Model!");
return ok(index.render());
}
}
은 아마 솔루션은 bindFormRequest() 메소드는 문자열 또는 문자열의지도처럼, 추가 매개 변수와 함께 호출 할 수 있다는 사실에 어떻게 든 낳는? 그러나 나는 그 목적을 발견 할 수 없다. 그것에 대한 통찰력 또한 위대 할 것입니다. 감사합니다.
대단한 일반적인 접근 방식입니다.그러나 정확히 어디에 구현 했습니까? 특정 프로젝트 또는 Play 핵심에 직접 있습니까? bindFromRequest 메서드의 기존 매개 변수의 목적이 무엇인지 생각 해보시겠습니까? – linsenfips
나는 play core Form 클래스를 확장하는 특정 프로젝트에서 CustomForm 클래스를 만들었습니다. 그래서이 부분적인 바인딩 기능이 필요할 때, 코어를 재생하는 대신 CustomForm 클래스를 사용해야합니다. 'data' 매개 변수는 요청의 데이터를 포함합니다 (재생 코어'Form.bindFromRequest() 소스를 살펴보고, 데이터 맵을 생성하여'bind()'메소드에 제공합니다). 'allowedFields'는 바인드 된 데이터를 제한하는 데 사용되는 선택적 매개 변수입니다 (Spring DataBinder 기능). – mguillermin
나는 그것이 잘못되었지만 내가 원하는 바운드 데이터를 제한하지 않는다고 생각 하는가? – linsenfips