[SPRING] Spring MVC 3.0 : 영속 객체에 어떻게 바인드하나요?
SPRINGSpring MVC 3.0 : 영속 객체에 어떻게 바인드하나요?
저는 Spring MVC로 작업 중이며 데이터베이스에서 영구 객체를 바인드하고 싶습니다. 그러나 바인딩하기 전에 DB를 호출하도록 코드를 설정하는 방법을 알 수는 없습니다. 예를 들어, "BenefitType"개체를 데이터베이스로 업데이트하려고하지만 데이터베이스에서 개체를 가져오고 새 개체를 만들지 않고 모든 필드를 업데이트 할 필요가 없습니다.
@RequestMapping("/save")
public String save(@ModelAttribute("item") BenefitType benefitType, BindingResult result)
{
...check for errors
...save, etc.
}
해결법
-
==============================
1.몇 가지 옵션이 있습니다.
몇 가지 옵션이 있습니다.
-
==============================
2.그래서 클래스에서 같은 이름의 @ModelAttribute를 사용하여 메서드에 주석을 추가하여이 문제를 해결했습니다. Spring은 요청 매핑을 실행하기 전에 먼저 모델을 빌드한다.
그래서 클래스에서 같은 이름의 @ModelAttribute를 사용하여 메서드에 주석을 추가하여이 문제를 해결했습니다. Spring은 요청 매핑을 실행하기 전에 먼저 모델을 빌드한다.
@ModelAttribute("item") BenefitType getBenefitType(@RequestParam("id") String id) { // return benefit type }
-
==============================
3.도메인 모델이 너무 단순하기 때문에 UI 객체를 데이터 모델 객체에 직접 바인딩 할 수는 있지만 그렇지 않은 경우가 더 많습니다. 그렇다면 양식 바인딩을 위해 특별히 클래스를 설계 한 다음 컨트롤러와 도메인 객체간에 변환합니다.
도메인 모델이 너무 단순하기 때문에 UI 객체를 데이터 모델 객체에 직접 바인딩 할 수는 있지만 그렇지 않은 경우가 더 많습니다. 그렇다면 양식 바인딩을 위해 특별히 클래스를 설계 한 다음 컨트롤러와 도메인 객체간에 변환합니다.
-
==============================
4.나는 조금 혼란스러워. 실제로 업데이트 워크 플로에 대해 이야기하고 계신 것 같습니까?
나는 조금 혼란스러워. 실제로 업데이트 워크 플로에 대해 이야기하고 계신 것 같습니까?
두 개의 @RequestMappings이 필요합니다. 하나는 GET 용이고 다른 하나는 POST 용입니다.
@RequestMapping(value="/update/{id}", method=RequestMethod.GET) public String getSave(ModelMap model, @PathVariable Long id) { model.putAttribute("item", benefitDao.findById(id)); return "view"; }
그런 다음 POST에서 실제로 필드를 업데이트합니다.
위 예제에서 @ModelAttribute는 이미 위 메서드와 같은 메서드로 채워져 있어야하며 JSTL 또는 Spring tabglib과 같은 양식을 사용하여 속성을 바인딩합니다.
사용 사례에 따라 InitBinder를 살펴볼 수도 있습니다.
from https://stackoverflow.com/questions/3672100/spring-mvc-3-0-how-do-i-bind-to-a-persistent-object by cc-by-sa and MIT license