在过去的六个小时里,我在 Google 和 stackoverflow 上搜索了这个问题的答案。我最初是一名 PHP 开发人员,所以请耐心等待 - 从 PHP 控制器返回 JSON 数组非常简单。
我正在使用 Spring MVC 3.0,我只想从 Spring MVC 控制器将 JSON 对象返回到一些 Javascript。目前似乎没有简单的方法可以使用 portlet 来执行此操作 (https://jira.springsource.org/browse/SPR-7344)。我见过的解决方案建议创建另一个提供 JSON 响应的 DispatcherServlet,但我还没有找到有据可查的示例。如果有人知道实现此目的的好方法(最好使用注释),请告诉!
我最终找到了一种从 Spring MVC portlet 控制器返回“JSON”的解决方法。我是这样做的。
在我的控制器中:
@ResourceMapping("ajaxTest")
public void ajaxHandler(ResourceRequest request, ResourceResponse response)
throws IOException {
OutputStream outStream = response.getPortletOutputStream();
StringBuffer buffer = new StringBuffer();
Map<String, String> testMap = new HashMap<String, String>();
testMap.put("foo", "bar");
String test = new JSONObject(testMap).toString();
buffer.append(test);
outStream.write(buffer.toString().getBytes());
}
在“view.jsp”中:
<portlet:resourceURL var="ajaxtest" id="ajaxTest"/>
<script type="text/javascript">
$.get('<%= ajaxtest %>', function(response) {
var json = eval('(' + response + ')');
});
</script>
由于@ResourceMapping注解目前不支持返回JSON,所以我只是使用org.json.JSONObject将我的地图转换为JSON对象,然后返回该对象的toString()。 @ResourceMapping 的值应该与resourceURL 的id 匹配。使用 eval 将 JSON 字符串转换为 Javascript 会带来安全风险,但我只是将其包含在内,因为它是最简单的示例。如果您担心安全性,请使用 JSON 解析器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)