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

标签 ajax json spring-mvc portlet spring-portlet-mvc

在过去的六个小时里,我在 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/

相关文章:

javascript - 向下滚动时扩展站点?

javascript - 在 MVC 中解析 JSON 字典中的键/值对结果

java - 如何将 ArrayList 模型更改为 JSON

java - 无法自省(introspection)类 [org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration]

javascript - 方法返回意外错误

javascript - Ajax 之后单击按钮后禁用按钮 - ASP.NET MVC5

javascript - 加载多个 json 文件并使用 ajax 和 jquery 将其显示到 html

python - 如何在Python中将提取的文本从PDF转换为JSON或XML格式?

Spring - nginx 中的邮件发件人

javascript - 使用 AJAX 和 PHP 通过模态登录