java - 使用正确的编码通过ajax将西里尔字符串从jsp发送到java类

标签 java ajax jsp spring-mvc cyrillic

我的 jsp 页面中有一些输入字段,它们获取西里尔字母输入,然后按下按钮尝试使用 ajax 发送到此 java 方法。 java 方法中的字符串最终变成了乱码。

jsp页面中的字段:

<div class="span1">
  <form:label cssClass="control-label" path="">
        <spring:message code="web.messages.someMessage" />
    </form:label>
    <form:input cssClass="input-block-level" path="" id="articleId" />
</div>
<div class="span1">
  <label>&nbsp;</label>
  <button type="button" id="search-btn" class="btn" >
        <spring:message code="web.messages.buttonMessage" />
  </button>
</div>

脚本中的ajax:

$("#search-btn").on("click", function(e) {
    e.preventDefault();
    showDialog("${pageContext.request.contextPath}");
});

function showDialog(baseContext) {
    var article = $('#articleId').val().replace(/\s+/g, "");

    if (article) {
        article = "?article=" + article;
    }

    $.ajax({
        type : "GET",
        url : "${pageContext.request.contextPath}/sync/getFilter" 
            + article,
        success : function(data) {
            onClickTable();
        }
    });
}

这是java方法的一部分,其中的值变成了乱码:

@RequestMapping(value = "/getFilter", method = RequestMethod.GET)
public @ResponseBody ModelAndView getFilter(HttpServletRequest request) {       
    String article = (String) request.getParameter("article");
    .
    .

最佳答案

通过将信息放入 JSON 中并像这样发送来解决问题。 所做的更改:

jsp脚本部分的ajax:

function showDialog(baseContext) {
    var article = $('#articleId').val().replace(/\s+/g, "");

    var data = {
            "article": $('#articleId').val().replace(/\s+/g, ""),
            // other keys and values
            "lastKey": $('#lastValueId').val().replace(/\s+/g, "")
    }

    $.ajax({
        type : "POST",
        url : "${pageContext.request.contextPath}/sync/getFilter",
        data: data,
        success : function(data) {
            onClickTable();
        }
    });
}

处理数据的java方法:

@RequestMapping(value = "/getFilter", method = RequestMethod.POST)
public @ResponseBody ModelAndView getFilter(SomeObject receivedData) {
        String article = receivedData.getArticle();
        // rest of the method

其中 SomeObject 是一个对象,包含我们在数据中收到的值,并为其提供了适当的 set 和 get 方法。

关于java - 使用正确的编码通过ajax将西里尔字符串从jsp发送到java类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45080817/

相关文章:

javascript - Python Flask 使用按钮调用函数

jquery - 我可以在 jsp 中提醒 struts2 属性标记吗?

java - 如何使用纯阿拉伯文本实现 Struts 2 i18n?

javascript - Wordpress 的 Ajax 选项卡在用户更改选项卡时加载并运行不同的短代码

java - 多线程jsp?

java - 无法运行代码,intellij run arrow是 'grey'

java - 如何在动态下拉列表中选择一个元素?

Java 日期和标准格式

java - 调度传入 RPC 调用时出现异常

javascript - 有没有办法暂停脚本直到 javascript 关闭完成? JavaScript、jQuery、AJAX