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";
}
假设客户使用表达式语言来呈现foo
和bar
; 但我们使用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,但是随后我必须对页面加载进行更多请求,并且在页面加载时,可能需要根据其他输入在barOptions
controller方法中确定逻辑getFoo()
。
回答:
乍一看,我不能说我看到任何明显的方法错误。最初使我措手不及的唯一方面是您需要将模型对象中的数据转换为json。
对我而言,JSON通常意味着需要转换某种服务器端对象,以便客户端javascript可以以javascript方式访问或操纵其结构。我猜想在不了解选项列表的更多用途的情况下,我看不到为什么需要json序列化的原因。
通过使用Tag将模型对象转换为JSON,我们避免了客户端提出的额外请求
但是,如果我们假设需要JSON(也许是某些第三方jquery插件),那么我绝对不会发现方法有什么问题。
barOptions无序列表有什么特别之处或不同之处,为什么它使用json呈现?为什么不仅仅使用for循环来构建列表项呢?或者,您可以使用一个自定义标签来完全构建ul。
除此之外,我还没有指出要点,因为人们可能会认为这是错误的代码。
以上是 Spring MVC-JSTL标签JSON转换可以吗? 的全部内容, 来源链接: utcz.com/qa/413537.html