Spring MVC 모델 Bean의 일부만을 표시 할 때 모델에서 브라우저에서 되돌아 오는 것을 업데이트하는 방법이 있습니까?Spring MVC + Hibernate : 브라우저에서 부분 모델 업데이트
의 우리가 (물론, 단지이 예에서는 공용 속성)를 사용자 클래스가 있다고 가정 해 봅시다 :
이public class User {
public String firstName;
public String lastName;
public String email;
public Date subscriptionExpiration;
}
지금 나는 JSP에서 입력 필드로 처음 세 속성을 표시하고있는 개체를 업데이트 할 그에 따라 데이터베이스. 이 세 매개 변수 만 업데이트해야하며 네 번째 매개 변수는 업데이트하지 않아야합니다. 한 가지 방법은이
@RequestMapping("/user/{userId}", method=RequestMethod.POST)
public String saveChanges(@PathVariable userId, User user, Model model) {
User oldUser = User.loadFromDB(userId);
oldUser.firstName = user.firstName;
oldUser.lastName = user.lastName;
oldUser.email = user.email;
oldUser.saveToDB();
model.addAttribute("user", oldUser);
}
될 것이다 달성하기 그러나 이것은 너무 많이 좋아하지 않아 변경할 수있는 모든 속성을 하드 코딩하는 것을 의미한다.
사용자가 변경할 수있는 항목에 따라 업데이트 할 필드를 결정하는 방법이 있습니까? 이 메커니즘은 요청 매개 변수에있는 모든 것이 변경 될 수 있다고 가정하는 것보다 더 똑똑해야합니다. 그렇지 않으면 정통한 사용자가 수동으로 추가 필드를 요청에 삽입 할 수 있습니다.
@Entity (dynamicUpdate = true)를 사용하면 내 사용자의 모든 객체가 요청으로 돌아 오지 않아 문제가 해결되지 않으며 많은 보안 구멍이 열리게됩니다.
봄에 멋진 기능이 없거나 개념적으로이 문제를 해결할 다른 방법이 있습니까? 어떤 힌트도 대단히 감사하겠습니다!
당분간 나는 이와 같은 작업을 수행했습니다. 필자는 필드에 사용자 정의 주석을 사용하여 업데이트할지 여부를 결정한 다음 ignoreProperties 목록을 제공하도록 파싱합니다. 잘 작동하지만 수동으로 정의하는 것을 피하고 싶습니다. 입력에 감사드립니다! – usimon