저는 Spring MVC 주석 중심 프로젝트를 가지고 있으며 훌륭하게 작동합니다. 이 시점에서 많은 양식이 작고 Ajax 요청을 사용하여 양식을 처리하는 경향이 있습니다. 나는이 플러그인을 사용하여 Ajax 요청을 처리하기 위해 http://jquery.malsup.com/form/을 사용했으며, 또한 훌륭하게 작동 해왔다. 나는 문제가 생겼다. Jackson을 사용하여 @ResponseBody 항목을 json으로 직렬화합니다. 그것은 훌륭하게 작동했지만, 파일을 업로드해야하는 첫 번째 형식으로 진행되었습니다. AjaxForm은 iframe 제출 트릭을 사용하여 구형 브라우저에서 이것을 처리하지만 모든 정보가 성공적으로 도착하는지 확인하기 위해 응답을 <textarea></textarea>
으로 묶어야한다고 경고합니다. 나는 미친 듯이 주변을 둘러 보았고, 객체를 위해 Custom Serializer를 만들 수 있다는 것을 알았지 만 요청 유형이 XHR
이고 그 다음에만 <textarea></textarea>
태그로 응답을 둘러싸고 있는지 확인하는 방법을 생각할 수 없다. . 어떤 아이디어? 사전에Spring MVC 3 - Jackson - AjaxForm
public @ResponseBody
JsonResponse setReferenceNumber(@ModelAttribute("referenceNumber")
@Valid ReferenceNumberBean referenceNumber,
BindingResult result,
HttpServletResponse response)
{
//Do some stuff
//Theoretically here I would call upon some logic to surround the response?
return jsonResponse;
}
감사 :
여기 내 코드의 일부입니다!
UPDATE - 난 거의 특히 봄에 새로운 인터셉터를 추가하여, 나는이 문제를 해결했다고 생각 :
이<mvc:interceptors>
<bean class="edge.portal.vendor.web.interceptor.MultipartAjaxInterceptor"></bean>
</mvc:interceptors>
그런 다음 X가-요청-로하면 요격 시험을 볼 필요, 따라서 iframe이 아약스 게시물을 암시, 내 자바 스크립트 아약스로 전화를 플래그했지만 헤더이 변화를 반영하지 않은 경우 다음 태그를 추가 :
@Component
public class MultipartAjaxInterceptor extends HandlerInterceptorAdapter
{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
{
if(request.getParameter("isAjax") != null && request.getHeader("X-Requested-With") == null)
response.getWriter().write("<textarea>");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception
{
if(request.getParameter("isAjax") != null && request.getHeader("X-Requested-With") == null)
response.getWriter().write("</textarea>");
}
}
이제
내가 우연히 분명히 문제
가 당신 수없는 칼 l 응답의 getWriter 또는 OutputStream이 두 번 이상 반복되면이 문제를 해결하는 올바른 방법을 찾고 있지만 여기에서 어디로 가야할지 모릅니다.
결국 그렇게 될 수도 있습니다. JsonSerializer를 사용할 수 있기를 기대하고 있었기 때문에 도움이되었지만 옵션이 아닐 수도 있습니다. – Mark