gpt4 book ai didi

ajax - 如何使用基于 Spring MVC 注释的 Portlet Controller 通过 AJAX 呈现 JSON View /响应?

转载 作者:行者123 更新时间:2023-12-04 17:27:34 24 4
gpt4 key购买 nike

在过去的六个小时里,我在 Google 和 stackoverflow 上搜索了这个问题的答案。我最初是一名 PHP 开发人员,所以请耐心等待 - 从 PHP Controller 返回一个 JSON 数组是微不足道的。

我正在使用 Spring MVC 3.0,我只是想将一个 JSON 对象从我的 Spring MVC Controller 返回给一些 Javascript。目前似乎没有简单的方法可以使用 portlet (https://jira.springsource.org/browse/SPR-7344) 来做到这一点。我看到的解决方案建议创建另一个提供 JSON 响应的 DispatcherServlet,但我还没有找到一个有据可查的例子。如果有人知道完成此操作的好方法(最好带有注释),请告诉!

最佳答案

我最终找到了一种从 Spring MVC portlet Controller 返回“JSON”的解决方法。这是我如何做到的。

在我的 Controller 中:

@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 解析器。

关于ajax - 如何使用基于 Spring MVC 注释的 Portlet Controller 通过 AJAX 呈现 JSON View /响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784122/

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