#ajax #jsp #spring-mvc
#ajax #jsp #spring-mvc
Вопрос:
Как я могу получить простое сообщение (например, msg) из jsp/ajax
in spring controller
и вернуть response
(например, resp) от контроллера обратно в jsp, в то время как jsp может получить этот ответ с помощью ajax и показать это в <div>
?
Возможно, следующий пример неверен, особенно часть ajax, спасибо за изменение:
вот мой контроллер:
@RequestMapping("/testAjax")
protected ModelAndView testActiveX(HttpServletRequest request,HttpServletResponse response){
ModelAndView model = new ModelAndView("test_Ajax");
Date date=new Date();
model.addObject("date",date.toString());
return model;
}
вот моя страница test_Ajax.jsp:
<html lang="en">
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<head>
<spring:url value="/resources/jquery-3.1.1.min.js" var="jqueryJs"></spring:url>
<script src="${jqueryJs}"></script>
<script >
$(document).ready(function($)
{
$("#translate").click(translation());
});
function translation() {
var words = $("input").val();
$.ajax({
url: '/WEB-INF/jsp/test_Ajax.jsp',
data: {
word: words
},
success: function (data) {
$("#container").html(data);
},
type: 'GET'
});
}
</script>
</head>
<body>
<input type="text" id="input" name="inputword"><br/><br/> <-- used to provide msg --%>
<button id="translate">Translate</button><br/><br/>
<div id="container"></div>
</body>
</html>
Ответ №1:
Как я вижу, у вас ошибка в URL-адресе вызова ajax, поскольку вы пытаетесь получить доступ к jsp внутри папки WEB-INF. Поскольку вы используете spring mvc с @RequestMapping, вы должны указать вызов ajax на URL, прослушиваемый этим отображением.
В вашем случае вы должны изменить URL-адрес, чтобы указать конечную точку сервлета, которая является субъектом, который предоставляет вам составленный HTML-код представления $.ajax({ url: ‘/testAjax’, data: { word: слова }, success: функция (данные) { $(«#container»).html(data); }, тип: ‘GET’ });
Возможно, могут быть другие ошибки, поскольку сопоставление вашего запроса может быть в контексте (так что вы можете связать RequestContext с URL-адресом сопоставления запросов.
Надеюсь, это поможет
Комментарии:
1. Я замечаю, что в этом примере могут быть ошибки. Я хочу знать решение, пожалуйста, приведите пример, который выполняется правильно. Я имею в виду, что на первом шаге, нажав на
ajax-based
кнопку jsp, контроллер получает указанное значение, а на втором шаге spring controller может манипулировать полученными данными и возвращать обработанные данные вjsp page
, пока он может отображать с помощью ajax в <div>.
Ответ №2:
Опубликованный вами код должен работать с правильным URL-адресом в вызове ajax. Приложения Java имеют контекст (начало URI), поэтому вы должны помнить об этом при указании URL (вы можете использовать выражения jstl, такие как $ {ContextPath}, чтобы получить это значение, если вы используете спецификацию web 3.0).
Вы также можете получать параметры запроса (отправленные через post или get), добавляя параметры к методу контроллера и комментируя их с помощью @QueryParam, который получает имя параметра для сопоставления (это также работает со сложными объектами json, если у вас есть компонент JacksonMapper, определенный в контексте spring). Так, например. чтобы получить строку word, вы должны добавить
@QueryParam("word") String word
к сигнатуре метода.
Вы также можете напрямую работать с HttpServletRequest в этом методе и получать содержимое параметра следующим образом:
String word = request.getParam("word");
внутри контроллера.
Комментарии:
1. Приведите мне пример, подобный моему вопросу, пожалуйста. Я хочу знать полный цикл между jsp и spring mvc с помощью технологии ajax.