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;
}
'error' 카테고리의 다른 글
[spring] Field required a bean of type that could not be found. (0) | 2023.08.30 |
---|---|
blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. (0) | 2023.05.25 |
chrome 106 drag and drop error (0) | 2022.10.13 |
_focusTabbable 에러 (0) | 2022.07.23 |
ajax 400 json parse error (0) | 2022.06.11 |