刷新 JSP 变量而不重新加载页面

Posted

技术标签:

【中文标题】刷新 JSP 变量而不重新加载页面【英文标题】:Refreshing JSP variable without reloading a page 【发布时间】:2015-11-02 06:26:15 【问题描述】:

在我的网络应用程序中,我使用 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 后,您的服务器端代码能否将此数据返回给客户端? 我可能弄错了,但我想我只能返回一个页面或 html 部分。这意味着它将重新加载 - 部分或完整。但是在代码中我使用了 serversList 变量,这个变量写在 body 标签中。这就是为什么我认为必须有更好的方法。 【参考方案1】:

您正在寻找 asynchronous javascript and XML 又名 Ajax。可以使用纯 JavaScript 或任何第三方 JavaScript 库(如 JQuery)来实现。

【讨论】:

我应该以其他方式使用我的 AJAX 请求吗?正如我看到的一个问题,JSP 被加载一次,但它的变量是在数据更改后使用的。所以数据更改后,它仍然读取“旧”JSP。但是如果我不想刷新页面,如何避免这个问题呢?也许另一种从服务器端读取变量的方法?否则我的 AngularJS 没有多大意义——用户总是会被推回到起点。

以上是关于刷新 JSP 变量而不重新加载页面的主要内容,如果未能解决你的问题,请参考以下文章

在浏览器中重新加载/刷新页面而不重新提交表单?

以角度刷新下拉列表而不重新加载页面

仅使用 jQuery/Ajax 刷新表的值而不重新加载页面

提交按钮后如何重新加载谷歌recaptcha而不刷新页面? [复制]

JQuery AJAX 发布和刷新页面内容而不重新加载页面

刷新数据表而不重新加载页面