从Spring Controller刷新jsp页面

时间:2014-09-21 21:09:17

标签: java spring jsp

我在调用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; ???

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题。不是我希望的方式,但仍然...... 我解决它的方法是在我的jsp中创建表单。在控制器中我创建一个 包装器“LanguageWrapper”并将其添加为模型属性。 最后,当点击一个按钮时,我提交表单“$('#formName')。submit();”还有这个 对我来说很完美。 我仍然不知道我提交时使用ajax页面没有刷新,当提交这样的表格时它会刷新。我会花一些时间来研究这个...... 如果有人对此有更多了解,请免费填写以添加更多信息。 我希望我的回答可以帮助其他有类似问题的人。