복붙노트

[SPRING] 한 컨트롤러에서 다른 컨트롤러 스프링으로 모델 데이터를 전달하는 방법

SPRING

한 컨트롤러에서 다른 컨트롤러 스프링으로 모델 데이터를 전달하는 방법

내 컨트롤러 -A 클래스는 다음과 같습니다.

@PostMapping("/otp")
public String otpSubmit(@RequestParam("token") String token, HttpSession session, Model model) throws IOException {

Long enrollment = (Long) session.getAttribute("enrollment");
BaseResponse otpResponse = otpRestClient.validateOTP(enrollment, token);
if(otpResponse.getCode().equals("1020")) {
    model.addAttribute("object", otpResponse.getPayload());
    return "redirect:/password";
}

model.addAttribute("errorCode", otpResponse.getCode());
model.addAttribute("errorMessage", otpResponse.getMessage());

return "/otp";
}

내가 원하는 것은 간단하다 (나는 생각한다) model.addAttribute ( "object", otpResponse.getPayload ()); 컨트롤러 B 클래스에 연결하면 다른 뷰에서 해당 데이터에 액세스 할 수 있습니다.

이것을 컨트롤러 -B 클래스에 어떻게 주입 할 수 있습니까?

해결법

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

    1.redirectAttributes를 추가하여 모델 데이터를 전달할 수 있습니다.

    redirectAttributes를 추가하여 모델 데이터를 전달할 수 있습니다.

    다음은 컨트롤러입니다.

      public String controlMapping1(
        @ModelAttribute("mapping1Form") final Model model, 
        final RedirectAttributes redirectAttributes) {
    redirectAttributes.addFlashAttribute("mapping1Form", model);
    return "redirect:mapping2";
    

    }

    여기 Controller2입니다.

    public String controlMapping2(
        @ModelAttribute("mapping1Form") final Model model) {
    model.addAttribute("transformationForm", model);
    return "view_name";  
    

    }

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

    2.이 "Object o = otpResponse.getPayload ()"객체를 전역 변수에 저장할 수 있으므로 나중에 모든 컨트롤러에서 액세스 할 수 있습니다.

    이 "Object o = otpResponse.getPayload ()"객체를 전역 변수에 저장할 수 있으므로 나중에 모든 컨트롤러에서 액세스 할 수 있습니다.

  3. from https://stackoverflow.com/questions/49122495/how-to-pass-model-data-from-one-controller-to-another-controller-spring by cc-by-sa and MIT license