Apache7 с Struts2 + Struts2-JSON-плагин + JQuery-UI автозаполнение: специальные символы не экранированы должным образом - PullRequest
0 голосов
/ 31 марта 2011

надеюсь, что вы можете помочь мне с проблемой: я использую Struts2 с Struts2-JSON-плагином, оба в версии 2.1.8.1.Версия JQuery-UI - 1.8.9.Весь шебанг работает на Tomcat 7.0.8.Моя проблема заключается в следующем: когда я ввожу специальные символы (например, имя «Мюллер») в поле поиска, метод setTerm (строковый термин) моего Struts-действия вызывается с параметром «Мюллер».Итак, очевидно, что возникает некоторая ошибка кодирования.

Я определил исходный Struts-Action для автозаполнения, его конфигурация-xml выглядит следующим образом:

<action name="SearchUsers" class="...">
    <interceptor-ref name="..." />
    <result type="json">
        <param name="root">users</param>
            <param name="noCache">true</param>
    </result>
</action>

Вот так я настроил автозаполнение навеб-страница:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript" src="jquery-ui/jquery-1.4.4.min.js"></script>
    <link rel="stylesheet" type="text/css" href="jquery-ui/css/ui-lightness/jquery.ui.all.css" />
    <script type="text/javascript" src="jquery-ui/jquery-ui-1.8.9.custom.min.js"></script>
    <script type="text/javascript">
        $("#nachname").autocomplete({
            source : "SearchUsers.action",
            dataType : "json",
            minLength : 3
        });
    </script>
</head>
<body>...</body>
</html>

Заранее благодарим за помощь!

Ответы [ 2 ]

0 голосов
/ 05 апреля 2011

Проблема была скрыта в файле Tomcat server.xml.Соединитель был таким:

<Connector connectionTimeout="20000" port="8888" protocol="HTTP/1.1" redirectPort="8443"/>

В нем отсутствовал атрибут URIEncoding = "UTF-8":

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8888" protocol="HTTP/1.1" redirectPort="8443"/>
0 голосов
/ 31 марта 2011

@ toLowerCase me: Я не уверен, поддерживает ли UTF-8 это или нет, внутренне Struts2 будет использовать схему кодирования UTF-8 в качестве схемы по умолчанию. Поэтому проверьте, является ли причина UTF-8, если это так, создайте файл struts2.properties и установите для своей кодировки что-то вроде.

### This can be used to set your default locale and encoding scheme
# struts.locale=en_US
struts.i18n.encoding=UTF-8

это мое предположение, и я вообще не пробовал, поэтому все, что вы можете сделать, это поиграть ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...