2013-10-22 3 views
1

Spring MVC 애플리케이션에는 Ajax가있는 컨트롤러와 JSP 파일이있다. Ajax에서 Spring Controller로 데이터를 전송할 때 charset UTF-8로 올바른 문자열을 갖지만 컨트롤러가 Ajax에 응답을 보낼 때이 문자열의 인코딩이 잘못되었습니다. 러시아어로 응답을 보내고 Ajax에 대한 응답이 있고 JSP 페이지에 삽입 할 때이 문제가있는 컨트롤러가 필요합니다. ?????? ????? ?????? 문서라도 내 코드 :스프링 MVC. Ajax에 대한 응답

@Controller 
public class GroupsController { 

@RequestMapping(value = "/addData.html", method = RequestMethod.GET) 
public ModelAndView getPage() { 
    return new ModelAndView("addData"); 
} 

@RequestMapping(value = "/addData.html", method = RequestMethod.POST) 
public @ResponseBody String addNewGroup(@ModelAttribute(value = "group") GroupStudent group, 

    if(group.getGroupStudentNumber() != null) { 
     return "Группа " + group.getGroupStudentNumber() + " добавлена"; 
    // return "Group " + group.getGroupStudentNumber() + " has been added"; 

    } else 
     return null; 

} 

} 


<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 
<html> 
<head> 
    <title>Add data</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" charset="UTF-8"> 
    <script type="text/javascript" 
      src="<c:url value="resources/jquery.js"/>"></script> 
    <script type="text/javascript"> 
     function addGroupAjax() { 
      var groupStudentNumber = $('#groupStudentNumber').val(); 

      $.ajax({ 
       type: "POST", 
       url: "/IRSystem/addData.html", 
       data: "groupStudentNumber=" + groupStudentNumber, 

       success: function(response) { 
        $('#group').html(response); 
       }, 
       error: function(e) { 
        alert("Error" + e); 
       } 
      }); 
     } 
</script> 
</head> 
<body> 
       <div align="left"> 
        <label>Group</label> 
        <input id="groupStudentNumber"/> 
        <input type="submit" value="Add" onclick="addGroupAjax()" /> 
        <div id="group" style="color:green"></div> 
       </div> 

</body> 
</html> 

답변

0

당신은이 같은 RequestMapping 헤더에 인코딩을 설정할 수 있습니다 ... 그게 도움이된다면

@RequestMapping(value = "/addData.html", method = RequestMethod.GET, produces = "charset=UTF-8") 

참조.

+0

불행히도 도움이되지 않았습니다. – Vlad

0

AJAX 처리기가 응답 본문을 UTF-8로 읽지 않는 것 같습니다. 나는 이유를 모른다. Spring이 생성 한 응답에서 컨텐츠 유형을 지정하여 강제로 시도 할 수 있습니다. 반환 유형 변경

@RequestMapping(value = "/addData.html", method = RequestMethod.POST) 
public ResponseEntity<String> addNewGroup(@ModelAttribute(value = "group") GroupStudent group, ... 

    if(group.getGroupStudentNumber() != null) { 
     HttpHeaders headers = new HttpHeaders(); 
     headers.add("Content-Type", "text/html; charset=utf-8"); 
     ResponseEntity<String> entity = new ResponseEntity<String>("Группа " + group.getGroupStudentNumber() + " добавлена", headers, HttpStatus.OK); 
     return entity; 
    } else 
     return null; 
} 
+0

네, 효과가 있습니다. 하지만 또 다른 해결책을 찾았습니다. <빈 클래스 = "org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> \t <속성 이름 = "messageConverters"> \t \t <빈 클래스 = "org.springframework.http.converter. StringHttpMessageConverter "> \t <속성 명 ="supportedMediaTypes "값 ="텍스트/플레인; 문자셋 = UTF-8 "/> \t \t \t \t – Vlad