Я использую Ajax-вызовы JavaScript для конкретного requestMapping для возврата соответствующего «представления».В консоли видно, что диспетчерServlet завершен с ответом 200 ОК.Но это не распространяется оттуда;он не показывает вид, который должен показывать.
Тем не менее, при отправке из JSP POST с использованием формы, он вводит тот же requestMapping и возвращает правильное представление JSP, которое я хочу.
Я проверил отправляемый POST-пакет и выяснил, что при использовании JSP POST для contentType было явно задано значение «application / x-www-urlencoded», поэтому я применил то же самоедля Ajax с помощью ajaxSetup.Но все равно это не сработало.
Ajax Call
$.ajaxSetup({contentType: "text/plain; charset=UTF-8"});
$.ajax({
type:'post',
url: getContext() + '/auth',
processData:true,
data:{
status: "authenticated"
}
})
main_menu.jsp
<script>
var user_name = "${username}"
</script>
- This JSP contains other JS codes in <script/> to follow
Код RequestMapping в @Controller
@RequestMapping(value = "/auth", method = RequestMethod.POST)
public String handleAuth(
@RequestParam("status") String status) {
if(status.equalsIgnoreCase("authenticated"))
return "main_menu";
return "";
}
Результат, когда "main_menu" было возвращено из requestMapping '/ auth' с использованием POST из вызова Ajax JavaScript
20:24:56.389 [http-nio-8080-exec-4] DEBUG
org.springframework.web.servlet.view.JstlView - View name
'main_menu', model {}
20:24:56.396 [http-nio-8080-exec-4] DEBUG
org.springframework.web.servlet.view.JstlView - Forwarding to [/WEB-
INF/views/main_menu.jsp]
20:24:56.492 [http-nio-8080-exec-4] DEBUG
org.springframework.web.servlet.DispatcherServlet - Completed 200 OK
Результат, когда "main_menu" было возвращено из другого requestMapping, '/login 'Вы можете видеть, что другие файлы JS были вызваны методом GET из DispatcherServlet.Поле модели заполнено на этот раз.Когда я заполнил поле модели при использовании '/ auth' точно такой же вещью, это не сработало.
20:52:11.154 [http-nio-8080-exec-4] DEBUG org.springframework.web.servlet.view.JstlView - View name 'main_menu', model {username=admin, org.springframework.validation.BindingResult.username=org.springframework.validation.BeanPropertyBindingResult: 0 errors, password=1111, org.springframework.validation.BindingResult.password=org.springframework.validation.BeanPropertyBindingResult: 0 errors}
20:52:11.154 [http-nio-8080-exec-4] DEBUG org.springframework.web.servlet.view.JstlView - Forwarding to [/WEB-INF/views/main_menu.jsp]
20:52:11.156 [http-nio-8080-exec-4] DEBUG org.springframework.web.servlet.DispatcherServlet - Completed 200 OK
20:52:11.173 [http-nio-8080-exec-5] DEBUG org.springframework.web.servlet.DispatcherServlet - GET "/infosender/js/popup.js", parameters={}
20:52:11.174 [http-nio-8080-exec-10] DEBUG org.springframework.web.servlet.DispatcherServlet - GET "/infosender/js/main_initialization.js", parameters={}
20:52:11.174 [http-nio-8080-exec-8] DEBUG org.springframework.web.servlet.DispatcherServlet - GET "/infosender/js/folderadd.js", parameters={}
20:52:11.174 [http-nio-8080-exec-5] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped to ResourceHttpRequestHandler ["/js/"]
20:52:11.174 [http-nio-8080-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - GET "/infosender/js/keywordset_init.js", parameters={}
hello world!