java - 将 html 代码作为属性添加到 ModelAndView 中

标签 java javascript jquery spring

通常,如果我必须动态添加一些 html 代码,我想使用 JQuery 从 View 加载,然后使用 @ResponseBody 从 Controller 渲染 ModelAndView,因为我相信从 Javascript 添加静态 html 是不可读的并且不可重复使用。 现在我有一个情况,进行 Ajax 调用时,我需要检查 Controller 中的一些值,然后渲染回带有一些值的 map ,或者渲染要添加到 DOM 中的 html 代码。所以我一直在思考 ModelAndView 是如何工作的,以及如何添加要在 viewManagement 上处理的 View ,但只有在我决定附加该数据时才进行渲染。 所以想象一下我想要一张具有这些值的 map

    Map<String, Object> map = new HashMap<>
    map.add("status", "1")

在另一种情况下

        Map<String, Object> map = new HashMap<>
        map.add("status", "2")
        map.add("rowErros", "WEB-INF/row_errors.jsp")

然后在 View 中

      success:function(data)
             if(data.status=="2") $("#rowErrorsTable tbody tr:last").after(data.rowErros);

问候。

最佳答案

我不同意在客户端代码中包含标记本身可读性或可重用性较差,但无论如何,我不确定为什么您会选择在这个用例中使用 ModelAndView。您可以使用成功和错误回调在前端完成此操作,并从 Controller 方法返回适当的 HTTP 响应代码:

@Request(value="/foo")
public ResponseEntity<String> foo() {
    if (conditionIsMet()) {
        return new ResponseEntity<String>("", HttpStatus.OK); // Or some simple JSON string
    } else {
        return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);
    }
}

在前端:

success: doSuccess,
error: function() { $('#error').load('/error.jsp'); } // Optionally sniff for the incoming status code

假设您的错误案例远低于成功案例,那么您也:

  1. 为您的用户节省与使用每个负载传输 error.jsp 标记相关的带宽;
  2. 使用 HTTP 状态代码作为对 HTTP 请求的适当响应,从而清理并标准化您的 API

如果您需要在错误负载中添加其他信息,请考虑使用 JSON 对象,该对象除了 HTTP 状态代码本身提供的信息之外还向前端提供有关错误的信息。在许多情况下这并不是必需的,但对于您希望显示导致请求失败的传入请求元素的 BAD_REQUEST 情况,它可能很有用。

关于java - 将 html 代码作为属性添加到 ModelAndView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24724643/

相关文章:

jquery - 无法使用 jQuery 提交按钮淡出 div

java - 如何在java中将.zip压缩为.gz?

java - 如何在java中像MATLAB imread()一样读取图像?

javascript - 侧边栏和主页持久性 - Rails

javascript - 将逗号分隔值的字符串转换为多维 JavaScript 数组?

基于类事件的 Jquery on 和悬停选择器不起作用

java - HandlerInterceptorAdapter,响应的JSON编码和后处理

java - 找出程序/进程正在监听哪些端口 - lsof、netstat

javascript - 如何为 csv 字符串的精确连续元素设置顺序?

javascript - 不使用 Eval 动态引用 Javascript 数组名称?