从Spring控制器刷新jsp页面

问题描述 投票:0回答:1

我在调用 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 中添加了一个支架 然后在控制器中我将“语言”变量设置为此持有者。然后我 在js中警告这个值并观察结果。 我只是编辑上面的代码。 我观察到 JAVA 代码运行完美 - 例如当模型中没有设置语言时,它会设置默认的“英语”并将其设置到模型中。此外,当存在此类属性时,我会使用它并将新值设置为模型。但是在js中,alert总是打印“English”???

java spring jsp
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.