Spring exception handler , can't access request attributes

General Tech Bugs & Fixes 2 years ago

0 1 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (1)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

I have this controller using spring boot 2.1

@Controller
@AllArgsConstructor
@ControllerAdvice
public class AdminPoolsController {

@PostMapping("admin/pools/edit")
    public String update(@Valid final PoolDto pool,
                         @RequestParam(name = "image-upload", required = false) final MultipartFile file,
                         final BindingResult bindingResult,
                         final RedirectAttributes redirectAttrs) throws IOException {
        //some logic
    }


    @ExceptionHandler(MaxUploadSizeExceededException.class)
    public String fileSizeLimitExc(
            final HttpServletRequest request,
            final RedirectAttributes redirectAttributes,
            final MaxUploadSizeExceededException exc
    ) {
        final Object id = request.getAttribute("id");
        redirectAttributes.addFlashAttribute(
                "errors",
                ImmutableMap.of(
                        "logo",
                        String.format(
                                "File exceeded max size of %d bytes",
                                exc.getMaxUploadSize()
                        )
                )
        );
        return "redirect:/admin/pools/edit" + (id == null ? "" : "?id=" + id.toString());
    }

}

As you see I have PoolDto in POST method , this DTO has id , binding happen through html form

<input type="hidden" name="id" id="id" th:value="${pool.id}">

In html form I can provide file using input type file , but this file is limited in size therefore I catch MaxUploadSizeExceededException My problem is , HttpServletRequest inside error handling method doesn't have any request attributes , in my case I want to get id from original request , but it is always null. How can I catch original request attributes using ExceptionHandler ?

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.