복붙노트

[SPRING] Spring MVC 3.0 : 영속 객체에 어떻게 바인드하나요?

SPRING

Spring MVC 3.0 : 영속 객체에 어떻게 바인드하나요?

저는 Spring MVC로 작업 중이며 데이터베이스에서 영구 객체를 바인드하고 싶습니다. 그러나 바인딩하기 전에 DB를 호출하도록 코드를 설정하는 방법을 알 수는 없습니다. 예를 들어, "BenefitType"개체를 데이터베이스로 업데이트하려고하지만 데이터베이스에서 개체를 가져오고 새 개체를 만들지 않고 모든 필드를 업데이트 할 필요가 없습니다.

    @RequestMapping("/save")
public String save(@ModelAttribute("item") BenefitType benefitType, BindingResult result)
{
    ...check for errors
    ...save, etc.
}

해결법

  1. ==============================

    1.몇 가지 옵션이 있습니다.

    몇 가지 옵션이 있습니다.

  2. ==============================

    2.그래서 클래스에서 같은 이름의 @ModelAttribute를 사용하여 메서드에 주석을 추가하여이 문제를 해결했습니다. Spring은 요청 매핑을 실행하기 전에 먼저 모델을 빌드한다.

    그래서 클래스에서 같은 이름의 @ModelAttribute를 사용하여 메서드에 주석을 추가하여이 문제를 해결했습니다. Spring은 요청 매핑을 실행하기 전에 먼저 모델을 빌드한다.

    @ModelAttribute("item")
    BenefitType getBenefitType(@RequestParam("id") String id) {
        // return benefit type
    }
    
  3. ==============================

    3.도메인 모델이 너무 단순하기 때문에 UI 객체를 데이터 모델 객체에 직접 바인딩 할 수는 있지만 그렇지 않은 경우가 더 많습니다. 그렇다면 양식 바인딩을 위해 특별히 클래스를 설계 한 다음 컨트롤러와 도메인 객체간에 변환합니다.

    도메인 모델이 너무 단순하기 때문에 UI 객체를 데이터 모델 객체에 직접 바인딩 할 수는 있지만 그렇지 않은 경우가 더 많습니다. 그렇다면 양식 바인딩을 위해 특별히 클래스를 설계 한 다음 컨트롤러와 도메인 객체간에 변환합니다.

  4. ==============================

    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를 살펴볼 수도 있습니다.

  5. 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