2014-09-21 3 views
1

У меня возникла проблема с обновлением моей страницы 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, предупреждение всегда печатает «английский» ???

+0

Как вы называете контроллер/changeLanguage? Вы делаете запрос POST или вы делаете запрос GET. Вы используете Jquery ajax или любой другой подобный метод для отправки данных формы? Вам нужно будет опубликовать код, который вы используете, для вызова changeLanguage –

+0

Я использую запрос POST. Он вызывается нажатием кнопки. –

+0

Вы добавили строку отладки, чтобы узнать, вызван ли контроллер. Также вы можете отправить код, который вы используете, для вызова контроллера –

ответ

0

Я решил свою проблему. Не так, как хотелось, но все же ... То, как я решил, это создать форму в моей jsp. В контроллере я создаю одну оболочку «LanguageWrapper» и добавляю ее как атрибут модели. Наконец, когда нажата кнопка, я отправлю форму «$ ('# formName»). Submit(); " и это отлично работает для меня. Я все еще не знаю, когда я отправляю с помощью ajax, страница не обновляется, и при отправке формы вроде этого она обновляется. Я потрачу некоторое время на изучение этого ... Если кто-то знает об этом подробнее, заполните, пожалуйста, дополнительную информацию. Надеюсь, мой ответ может помочь другим с подобными проблемами.

Смежные вопросы