javascript - Spring MVC - JSTL标签JSON转换可以吗?

标签 javascript model-view-controller spring-mvc

伪 Controller 方法

@RequestMapping("/foo")
public String getFoo(Model model) {
   model.add("foo", repo.findFoo());
   model.add("bar", repo.findBar());
   model.add("barOptions", repo.findBarOptions(bar));
   return "fooView";
}

假设客户端使用表达式语言来呈现 foobar ;但我们使用 JavaScript 来呈现 barOptions .

<html>
    <script>
    var options = <mytag:toJSON object="${barOptions}"/>;
    $("#options").renderOptions( options );
    </script>
    <body>
        <mytag:renderFoo foo="${foo}"/>
        <mytag:renderBar foo="${bar}"/>
        <ul id="options"></ul>
    </body>
</html>

常见的惯例告诉我这是不好的。但是 MVC 的本质, Controller 发送数据, View 决定如何使用它,告诉我这是好的。有没有更好的方法来做同样的事情?有什么理由不经常这样做吗?我可以使用单独的调用来请求 JSON,但随后我必须为要加载的页面发出更多请求,并且可能有逻辑来确定 barOptions在 Controller 方法中 getFoo()基于页面加载时的其他输入。

最佳答案

乍一看,我不能说我发现这种方法有任何明显的错误。最初让我措手不及的唯一方面是您需要将模型对象中的数据转换为 json。

对我来说,JSON 通常意味着需要转换某种服务器端对象,以便客户端 javascript 可以以 javascript 方式访问或操作其结构。我想在不了解选项列表的更多用途的情况下,我看不出这里需要 json 序列化的原因。

By using a Tag to convert a model object to JSON, we avoid an additional request made by the client

但如果我们假设 JSON 是必需的(可能是某些第三方 jquery 插件),那么我绝对看不出这种方法有什么问题。

barOptions 无序列表有什么特别之处,为什么用json 渲染?为什么不直接使用 for 循环来构建列表项呢?或者,您可以拥有一个完全构建 ul 的自定义标签。

除此之外,我忽略了人们可能认为这是错误代码的观点。

关于javascript - Spring MVC - JSTL标签JSON转换可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626595/

相关文章:

javascript - JavaScript 中的变量可见性

javascript - nodejs npm mysql返回单行句柄

mysql - 如何在 mvc(添加新连接)对话框中显示 mysql 提供程序

php - 需要在 PHP 中使用命名空间的动态类

spring-boot - 微服务究竟是如何实现的?

java - 如何使用 Spring Data 从 Spring Boot 中的实体中选择几个字段?

javascript - Webkit 日期解析

Cocoa:创建具有可变数量界面元素的窗口

java - Spring Boot Restcontroller 作为单元测试中的内部类(webmvctest)

javascript - 正确编码的字符串在插入 window.location.hash 时被解码