У меня возникла проблема с обновлением моей страницы jsp после вызова контроллера Spring. На моей индексной странице у меня есть логин, и после того, как пользователь вводит имя пользователя и пароль, форма отправляется на контроллер, а затем проверяет и создает новый сеанс пользователя. После этого моя страница обновляется, и все работает нормально. Проблема возникает, когда я реализую логику изменения языка страниц. Я делаю то же самое, но на этот раз страница не освежает! Вот что я пытался до сих пор:Обновить страницу jsp с контроллера Spring
JAVA CODE:
@RequestMapping(value="/index", method=RequestMethod.GET)
public String initializeIndex(ModelMap model) {
// IMPLEMENT SOME BUSINESS LOGIC HERE
String l = (String) model.get("language");
if (l == null) {
l = "English"; //Default
}
model.addAttribute("currentLanguage", l);
return "index";
}
/**
* When the user login.
*
* @param model
* @return
*/
@RequestMapping(value="/welcome", method=RequestMethod.POST)
public String login(ModelMap model) {
// IMPLEMENT SOME BUSINESS LOGIC HERE
return "redirect:/index";
}
/**
* When the user change website language.
*
* @param model
* @return
*/
@RequestMapping(value="/changeLanguage", method=RequestMethod.POST)
public String changeLanguage(@RequestParam String language, ModelMap model) {
//CHANGE SITE LANGUAGE...
model.addAttribute("language", language);
return "redirect:/index";
}
EDIT
Вот как я звоню/метод changeLanguage. Эта функция вызывается после события нажатия кнопки.
JS
function changeLanguage(language) {
$.ajax({
type: "POST",
url: "changeLanguage",
data: "language=" + language,
success: function(){
alert($('#languageHolder').val());
}
}
});
HTML
<input type="hidden" id="languageHolder" value='<c:out value="${currentLanguage}" />'/>
Теперь, когда я отладки приложения, я вижу, что все работает идеально. Единственное различие заключается в том, что при вызове/приветствии и переадресации на метод/index после этого index.jsp обновляется, а при вызове/changeLanguage, а затем в/index метод index.jsp не обновляется.
Еще одно отличие заключается в том, что при входе в систему я получаю форму и отправлю форму. В языке изменений я использую ajax для отправки данных на сервер. Это может быть проблема? Любая помощь будет оценена по достоинству.
EDIT я только что сделал несколько небольших экспериментов: добавить один держатель в моем index.jsp , а затем в контроллере я устанавливаю «язык» переменный этот держатель. Затем I предупреждает это значение в js и наблюдает результат. Я просто редактирую код выше. Я наблюдаю, что JAVA-код работает отлично - например, когда в модели нет языкового набора, он устанавливает значение по умолчанию «Английский» и устанавливает его в модель. Также, когда есть такой атрибут, я использую его и устанавливаю новое значение для модели. НО в js, предупреждение всегда печатает «английский» ???
Как вы называете контроллер/changeLanguage? Вы делаете запрос POST или вы делаете запрос GET. Вы используете Jquery ajax или любой другой подобный метод для отправки данных формы? Вам нужно будет опубликовать код, который вы используете, для вызова changeLanguage –
Я использую запрос POST. Он вызывается нажатием кнопки. –
Вы добавили строку отладки, чтобы узнать, вызван ли контроллер. Также вы можете отправить код, который вы используете, для вызова контроллера –