gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:43:14 25 4
gpt4 key购买 nike

通常,如果我必须动态添加一些 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com