error
form.submit / spring 전송 에러
dddzr
2022. 12. 13. 16:21
form submit으로 spring controller에 요청을 보낼때 400에러가 발생함.
"There was an unexpected error (type=Bad Request, status=400).
Required String parameter 'parameter' is not present"
파라미터나 url을 잘 못 입력했을 때 나는 에러인데
동일한 코드로 요청을 보내는데 특정 데이터를 보낼 때 만 400에러가 났음.
데이터가 너무 길 경우 (data too long)에 400에러가 나는걸 발견함
해당 데이터(param1)를 controller에서 required = false로 주고
form으로 전송하면 다음 데이터(param2)가 없다는 에러가 남.
아예 form에서 전송을 안해야 controller로 요청들어옴.
나는 param1에 필요없는 데이터가 포함되어있어서 제거하여 에러 해결했는데
큰 데이터 전송이 필요할 경우는 enctype다른걸로 한다던지(인코딩을 base64로 하면 용량이 늘어나서)
다른 방법 찾아봐야 할 듯
form 작성 예시
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "preview");
form.setAttribute("charset", "UTF-8");
form.setAttribute("enctype", "application/x-www-form-urlencoded");
form.setAttribute("target", "view");
addField(form, "param1", JSON.stringify(param1));
addField(form, "param2", JSON.stringify(param2));
document.body.appendChild(form);
previewWin = window.open("", "view");
form.submit();
form.parentNode.removeChild(form);
Controller
@RequestMapping(value = "/{pathParam}/preview"
, method = RequestMethod.POST, produces = "text/plain")
public ModelAndView preview(HttpServletRequest request
, @RequestParam(required = false) String param1, @RequestParam String param1
, @PathVariable("pathParam") String pathParam) throws Exception {
ModelAndView mv = new ModelAndView();
mv.setViewName(/preview);//뷰의 이름, 경로
mv.addObject("data", html);//뷰로 보낼 데이터
//...
return mv;
}