无需重新加载页面即可刷新JSP变量

4

我在我的Web应用程序中使用Java作为后端。在网页上,用户可以选择、删除或编辑一个/多个服务器。这些服务器的信息从服务器读取。Java控制器将JSON文件发送到JSP页面,显示服务器信息。

@RequestMapping(value = "/configurations.html", method = RequestMethod.GET) public ModelAndView chooseServers(ModelMap model) throws Exception {
    try {
        //reads objects from configuration and sends to the web page as JSON file.
        String result = mapper.writeValueAsString(servers);
        System.out.println(result);
        model.addAttribute("serversList", result);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return new ModelAndView("configurations"); }

数据将存储在以下变量中:
<html ng-app="homepage">
    <head>...</head>
    <body id="body" data-serversList='${serversList}' id="configurationsPage">
...</body>
</html>

我在JS中按以下方式读取这些数据:

var items = new Array();
var main = function(){
var information = $("body").attr("data-serversList");
    var serversJson  = JSON.parse(information);
    for (var i = 0; i < serversJson.list.length; i++){
        items.push({id: serversJson.list[i].id, text: serversJson.list[i].name});
    }
}
$(document).ready(main);

这是我如何在服务器端更新数据的方法:
$.ajax({
    url: 'addServer.do',//the value of SpringMVC controller
    data: ({serverObjectString : serverObjectString})
});

用户更改服务器、删除、添加或编辑它们后,数据将在服务器端重新加载。但在用户端,除非进行刷新,否则保持不变。但我正在使用AngularJS,这就是我犯难的地方 - 如何在同一JSP上保留所有逻辑,但重新加载

data-serversList='${serversList}'

而无需刷新页面?或者有其他方法来解决这个问题吗?


你需要在页面上刷新哪些数据?是 data-serversList 属性吗?你的服务器端代码能否在成功的 $.ajax 调用后将这些数据返回给客户端? - Mick Mnemonic
我可能错了,但我猜我只能返回一个页面或 HTML 部分。这意味着它将重新加载 - 部分或完整。但是在代码中,我使用 serversList 变量,而这个变量是写在 body 标签中的。这就是为什么我认为必须有更好的方法。 - Mary
1个回答

0
你正在寻找异步JavaScript和XML,也就是Ajax。可以使用纯JavaScript或任何第三方JavaScript库(如JQuery)来实现。

我应该以另一种方式使用我的AJAX请求吗?因为我发现一个问题,JSP只加载一次,但是它的变量在数据改变后被使用。所以在数据改变后,它仍然读取“旧”的JSP。但如果我不想刷新页面,如何避免这个问题呢?也许从服务器端读取变量的另一种方法?否则我的AngularJS就没有太多意义了——用户将始终被推回起点。 - Mary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接