Я создаю веб-приложение, используя Spring MVC.Приложение включает в себя выборку нескольких объектов, содержащих строки в качестве атрибутов из базы данных.У меня нет контроля над форматом этих строк, введенных в базу данных.
Я столкнулся с проблемой, когда строки, в которых есть кавычки ("и"), передаются в JavaScript в качестве атрибутов объектов JSON, они не распознаются как часть строки и, следовательно, закрывают кавычки.строки, частью которой они были. Я решил эту проблему, вызвав функцию JavaScriptUtils.javaScriptEscape () для каждой строки, извлеченной из базы данных в функции-оболочке.
Это исправляет ошибки JavaScript, но теперь у меня естьПроблема в том, что когда на веб-странице отображаются те же строки, включается escape-символ '\' (т. е. "отображается как \" и т. д.). Теперь мои требования следующие:
ТребуетсяФункция «unescape» эти строки вернуться к нормальной форме, чтобы они работали как задумано
Нужен способ применить указанную функцию ко всем строкам, извлеченным в передний конец. Это слишком многоБольно индивидуально вызывать эту функцию для каждого атрибута каждого объекта JSON, извлеченного в каждом вызове AJAX.добавленное в приложение в будущем, решение должно быть таким, которое не требует жесткого кодирования в каждом AJAX-запросе.
Нужен лучший способ применить это экранирование к выбранным объектамиз базы данных.Прямо сейчас у меня есть отдельная функция, которая убирает строки в каждом объекте, но проблема в том, что мне нужно будет определять новую функцию каждый раз, когда выбирается новый тип объекта.
Интересно, есть ли способ заставить Spring MVC автоматически справиться с этим, так как кажется, что это проблема, с которой большинство разработчиков столкнется в какой-то момент.Любые предложения, которые помогут сделать это проще для меня, приветствуются!
РЕДАКТИРОВАТЬ:
Это функция, которая вызывается для каждой строки, выбранной из базы данных:
String EscapeJS(String string)
{
string = JavaScriptUtils.javaScriptEscape(string);
return string;
}
Вот как возвращаются объекты:
@RequestMapping(value = "/urlToController", method = RequestMethod.POST)
public ResponseEntity<Object> returnObject(@RequestBody String option)
{
Object object = wrapperFunction(fetchObjectFromBackend(option));
return new ResponseEntity<>(object, HttpStatus.OK);
}
Здесь 'wrapperFunction ()' преобразует все строки внутри объекта с помощью EscapeJS ()
Это вызов AJAX:
$.ajax({
type: "POST",
headers:
{
'Accept': 'application/json',
'Content-Type': 'application/json'
},
url: '/urlToController',
data: option,
success: function(returnedObject)
{
console.log(returnedObject);
},
error : function(dataString)
{
alert("AJAX Call failed");
console.log(dataString);
}
});