我在调用Spring控制器后刷新jsp页面时遇到问题。 在我的索引页面中,我已登录,在用户输入用户名和密码后,表单将提交给控制器,然后验证并创建新的用户会话。毕竟,我的页面刷新,一切正常。当我实现更改页面语言的逻辑时,会出现问题。我做同样的事情,但这一次,页面并不令人耳目一新! 这是我到目前为止所尝试的:
JAVA代码:
@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";
}
修改
以下是我调用/ 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}" />'/>
现在,当我调试应用程序时,我发现一切都运行良好。唯一的区别是,当调用/ welcome方法和重定向到/ index方法之后,在刷新index.jsp之后,当调用/ changeLanguage方法再到/ index方法时,index.jsp不会刷新。
另一个区别是登录时我用户表单并提交表单。在更改语言中,我使用ajax将数据提交给服务器。这可能是问题吗? 任何帮助将不胜感激。
修改 我刚做了一些小实验:我在index.jsp中添加了一个持有者 然后在控制器中设置&#34;语言&#34;变量给这个持有人。然后我 在js中提醒此值并观察结果。 我只是编辑上面的代码。 我观察到的是JAVA代码工作正常 - 例如当模型中没有设置语言时,它会设置默认值&#34;英语&#34;并将其设置为模型。此外,当存在这样的属性时,我使用它并将新值设置为模型。但是在js中,警报始终是打印的&#34;英语&#34; ???
答案 0 :(得分:0)
我已经解决了我的问题。不是我希望的方式,但仍然...... 我解决它的方法是在我的jsp中创建表单。在控制器中我创建一个 包装器“LanguageWrapper”并将其添加为模型属性。 最后,当点击一个按钮时,我提交表单“$('#formName')。submit();”还有这个 对我来说很完美。 我仍然不知道我提交时使用ajax页面没有刷新,当提交这样的表格时它会刷新。我会花一些时间来研究这个...... 如果有人对此有更多了解,请免费填写以添加更多信息。 我希望我的回答可以帮助其他有类似问题的人。