如何使用基于 Spring MVC 注解的 Portlet 控制器通过 AJAX 呈现 JSON 视图/响应?

2024-05-09

在过去的六个小时里,我在 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(使用前将#替换为@)

如何使用基于 Spring MVC 注解的 Portlet 控制器通过 AJAX 呈现 JSON 视图/响应? 的相关文章

随机推荐

  • 为具有可变内容的内联块元素提供相同的高度?

    我有 4 个宽度固定但内容可变的内联块元素 并且我希望所有这些元素具有相同的高度 最大元素的高度 请参见这个jsfiddle http jsfiddle net kKZXj 我应该如何实现这个目标 如果仅使用 css 无法做到这一点 那么使
  • 如何使用固定位置 div/ 的浮动、清除和溢出元素并排对齐两个 div/

    所以我一直在尝试将两个 div 并排对齐而不重叠 我有一个 div 将被固定为侧边栏 而右侧的 div 将被固定为内容 希望有人可以帮助我 body background color 444 margin top 0 margin bott
  • 具有透明度的颜色输入

    是否可以使用内置选择透明颜色
  • 如何在android中的应用程序小部件中找到哪个按钮被点击?

    我想设计一个简单的应用程序小部件 它有两个文本视图和两个用于上一个 下一个的按钮 我很难处理应用程序小部件中的按钮单击 实际上我的愿望是 如果用户单击上一个按钮 我想显示以前的值 如果用户单击下一个按钮 我想显示数据库中的下一个值 如何知道
  • 将 firebase 框架添加到 ios 项目时出现链接器错误

    我一直在尝试将 firebase 框架添加到我的 ios 应用程序中 我按照这里的说明进行操作 https www firebase com docs ios quickstart html https www firebase com d
  • 一个 UITableView 中的两种不同的单元格类型

    大家好 我对如何在一个具有两个部分的 UITableView 中使用两种不同的单元格类型感到非常困惑 第一部分应返回一个大单元格 其中包含大量文本 另一部分应返回三个单元格 以导航到其他视图 我尝试过这样的 UITableViewCell
  • 将 matplotlib png 转换为 base64 以在 html 模板中查看

    背景 你好 我正在尝试制作一个简单的网络应用程序 按照教程计算阻尼振动方程 并将结果的 png 返回到 html 页面 然后将其转换为 Base64 字符串 Problem 该应用程序运行正常 只是在计算结果时返回损坏的图像图标 可能是因为
  • 加特林负载测试期间编译错误

    我正在尝试编写一个模拟 并且希望能够运行该模拟 我在尝试 mvn gatling execute 时遇到错误 我的 pom 有以下依赖项
  • 使用 Swashbuckle Asp.Net Core for ReDoc 添加 x-logo 供应商扩展

    我正在使用 swagger json 文件 由 Swashbuckle 生成 让 ReDoc 显示 API 文档 What I Need Add x logo vendor extension to swagger json generat
  • 使用opencv计算深度视差图

    我无法使用 opencv 从视差图计算深度 我知道两个立体图像中的距离是用以下公式计算的z baseline focal disparity p 但我不知道如何使用地图计算视差 我使用的代码如下 为我提供了两个图像的视差图 import n
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • 完成特定 Activity 的所有实例

    应用程序中可以有很多活动 最后启动的活动保留在堆栈顶部 按下后它会完成当前活动 我有一系列活动 这是流程 如果我们有 A B C 1 D C 2 活动 C 1 和 C 2 是在导航应用程序时启动的活动 C 的两个不同实例 因此 必需的是清除
  • 如何通过代码设置Fragment标签?

    我还没有找到类似的东西setTag String tagName 方法中的Fragment班级 唯一的方法是设置Fragment我发现的标签是通过做FragmentTransaction并传递标签名称作为参数 这是显式设置的唯一方法吗Fra
  • 如何使用restify上传文件

    我正在尝试使用 Restify 模块将图像文件上传到 Rest 服务器 更具体地说是 Confluence 但出现断言错误 我不确定我是否使用正确的方法将文件上传到 REST 服务器 有人能指出我正确的方向吗 这是我的尝试 var rest
  • oracle中是否有相当于concat_ws的东西?

    我有大量的列试图聚合在一起 其中大多数都有 NULL 值 我想分隔确实以 出现的值但我在oracle中找不到有效的方法来做到这一点 CONCAT WS 正是我所需要的 因为它不会在 NULL 值之间添加分隔符 但 Oracle 不支持这一点
  • 使用 jQuery Mobile 和响应式布局/CSS 媒体查询是否多余?

    我正在退房http mediaqueri es http mediaqueri es 今天发现这些网站非常适合移动设备 所以我想知道将 jQuery Mobile 和响应 自适应布局与媒体查询一起使用是否是多余的 因为仅使用媒体查询似乎是一
  • 最佳 DLL 符号转储实用程序

    我有数百个 DLL 属于一个巨大的意大利面条代码项目 需要查看它们导出或导入哪些调用 如果我能够获得 DLL 之间的依赖关系图 那就太好了 有人可以推荐我免费且可靠的实用程序吗 编辑 依赖遍历器似乎还不够 我不仅需要获取所需 DLL 的列表
  • 在 Oracle 临时表上放置索引安全吗?

    我读过 不应分析临时表 因为它会破坏其他表的统计信息 指数怎么样 如果我在程序运行期间在表上放置索引 使用该表的其他程序会受到该索引的影响吗 索引是否会影响我的进程以及使用该表的所有其他进程 或者它会单独影响我的过程吗 所有的回复都不是权威
  • 这个功能在 C# 中被称为什么以及 C# 的哪个版本使用此功能

    我在我的项目中使用了这行代码 但还没有看到这个语法 internal static StringBuilder a this StringBuilder sb string b gt sb Append b Append n 谁能告诉我这叫
  • 如何使用基于 Spring MVC 注解的 Portlet 控制器通过 AJAX 呈现 JSON 视图/响应?

    在过去的六个小时里 我在 Google 和 stackoverflow 上搜索了这个问题的答案 我最初是一名 PHP 开发人员 所以请耐心等待 从 PHP 控制器返回 JSON 数组非常简单 我正在使用 Spring MVC 3 0 我只想