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

伪控制器方法

@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的本质(控制器发送数据并由视图确定如何使用它)告诉我,这很好。有没有更好的方法来做同样的事情?有什么原因不能做到这一点?我可以使用一个单独的调用来请求JSON,但是随后我必须对页面加载进行更多请求,并且在页面加载时,可能需要根据其他输入在barOptionscontroller方法中确定逻辑getFoo()

回答:

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

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

通过使用Tag将模型对象转换为JSON,我们避免了客户端提出的额外请求

但是,如果我们假设需要JSON(也许是某些第三方jquery插件),那么我绝对不会发现方法有什么问题。

barOptions无序列表有什么特别之处或不同之处,为什么它使用json呈现?为什么不仅仅使用for循环来构建列表项呢?或者,您可以使用一个自定义标签来完全构建ul。

除此之外,我还没有指出要点,因为人们可能会认为这是错误的代码。

以上是 Spring MVC-JSTL标签JSON转换可以吗? 的全部内容, 来源链接: utcz.com/qa/413537.html

回到顶部