2016-05-25 2 views
-1

В моем проекте из UI я передаю строку на сервер, например account<s, используя метод HTTP post. Это значение извлекается во бэкэнд с использованием метода HTTPServlet request.getParameter(). GetParameter() возвращает закодированную строку. Значение account<s выбирается как account& lt;srequest.getParameter() возвращает поврежденные данные - Java

Сейчас в UI Мне нужно отобразить account<s. Если значение закодировано как account&lt;s, то я могу использовать html-декодирование в части пользовательского интерфейса. Но закодированная строка имеет дополнительное пространство. Вместо &lt;, я получаю & lt;.

JQuery Код:

var params = {}; 
params.passVal = "account<s"; 
//ajax call 
$.ajax({ 
    type:"POST", 
    url:url, 
    data:params, 
    datatype:"json", 
    async:false 
}).success(function(json){ 
    //success notification 
}); 

Java код:

String receivedVal = request.getParameter("passVal"); //account& lt;s 

Я использую Apache Tomcat 7 и JQuery v2.1.3

Для всех закодированных персонажей, между 1-м и 2-м символами добавляется пространство. Почему это так? И как я могу получить исходные данные на Java?

+0

Хм. 'request.getParameter()' довольно надежный. Вы уверены, что правильно отправили параметр? Это из формы браузера? Или какой-то клиентский код? – Thilo

+0

Параметр передается из формы браузера. И я проверил значение, которое передается в пользовательском интерфейсе, и это 'account

+0

можете отправить код? например 'HTML' и java' servlet' – emotionlessbananas

ответ

2

Эта проблема возникла из-за класса фильтра сервлета, в котором определяется процесс кодирования. Вместо &lt; он кодируется как & lt. Большое спасибо @ tak3shi за указание основной причины.

1

Объект HTML (&LT;) не является кодировкой URL; вам необходимо закодировать < как .

+0

Благодарим за отзыв. Но я не кодирую значения. Когда я передаю '<' из пользовательского интерфейса, он становится '& lt;' в бэкэнд –