Categories

See More
Popular Forum

MBA (4887) B.Tech (1769) Engineering (1486) Class 12 (1030) Study Abroad (1004) Computer Science and Engineering (988) Business Management Studies (865) BBA (846) Diploma (746) CAT (651) B.Com (648) B.Sc (643) JEE Mains (618) Mechanical Engineering (574) Exam (525) India (462) Career (452) All Time Q&A (439) Mass Communication (427) BCA (417) Science (384) Computers & IT (Non-Engg) (383) Medicine & Health Sciences (381) Hotel Management (373) Civil Engineering (353) MCA (349) Tuteehub Top Questions (348) Distance (340) Colleges in India (334)
See More

Spring exception handler , can't access request attributes

General Tech Bugs & Fixes
Max. 2000 characters
Replies

usr_profile.png
Shreya Bansal

User

( 7 months 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 ?

what's your interest


forum_ban8_5d8c5fd7cf6f7.gif