春季MVC.对阿贾克斯的回应



在Spring MVC应用程序中,我有一个带有Ajax的控制器和JSP文件。当我将数据从 Ajax 发送到 Spring 控制器时,我有带有字符集 UTF-8 的正确字符串,但是当控制器向 Ajax 发送响应时,此字符串的编码是错误的。我需要控制器用俄语发送响应并遇到这个问题,当我对 Ajax 做出响应并将其插入 JSP 页面时,我只有:?????????????????.这是我的代码:

@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>

您可以在 RequestMapping 标头中设置编码,如下所示...

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

看看这是否有帮助。

似乎您的 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;
}

最新更新