@ResourceMapping 接受来自 Ajax 请求的 JSON

2024-03-05

我正在搜索如何解释 Spring Portlet MVC 中 @ResourceMapping 中的 JSON 参数。当我添加@RequestBody时,我收到消息:不支持@RequestBody...真的卡在这个上了。

我有这个:

查看侧面:

<portlet:resourceURL var="getTest" id="ajaxTest" ></portlet:resourceURL>

    <p>
        <button onClick="executeAjaxTest();">Klik mij!</button>
        <button onClick="$('#ajaxResponse').html('');">Klik mij!</button>
    </p>
    <p>
        <h3>Hieronder het antwoord:</h3>
        <h4 id="ajaxResponse"></h4>
    </p>

    <script>
        function executeAjaxTest() {

            var jsonObj = {
                    user: "Korneel",
                    password: "testpassword",
                    type: {
                        testParam: "test",
                    }
                }

            console.debug(JSON.stringify(jsonObj));
            $.ajax({
                dataType: "json",
                contentType:"application/json",
                mimeType: 'application/json',
                url:"<%=getTest%>",
                data:JSON.stringify(jsonObj),
                success : function(data) {
                    $("#ajaxResponse").html(data['testString']);
                }
            });

        }
    </script>

控制器端:

@ResourceMapping(value="ajaxTest")
    @ResponseBody
    public void ajaxTestMethod(ResourceRequest request, ResourceResponse response) throws IOException, ParseException {

        LOGGER.debug("ajax method");

        JSONObject json = JSONFactoryUtil.createJSONObject();
        json.put("testString", "Ik ben succesvol verstuurd geweest!");
        response.getWriter().write(json.toString());
}

如何使用 spring magic 自动将此 JSON 数据映射到我自己的模型? 注意:这是 Spring Portlet MVC,而不是常规的 Spring MVC。


Spring MVC portlet 框架不支持开箱即用的 @ResponseBody 注释,但您可以自己实现 @ResponseBody 处理。

我们通过实现自定义视图类型、模型和视图解析器来实现这一点。

  1. 实现自定义模型和视图解析器(ModelAndViewResolver),比方说 JsonModelAndViewResolver。
  2. 在resolveModelAndView方法中,检查控制器方法是否具有@ResponseBody注释(或更具体的条件来识别JSON输出 - 例如注释+所需支持的mime类型)。
  3. 如果是,请返回您的自定义 View 实现 - 假设 SingleObjectJson 视图(扩展 AbstractView)。
  4. 将要序列化的对象传递给视图实例。
  5. 视图会将对象序列化为 JSON 格式并将其写入响应(通过在 renderMergedOutputModel 方法中使用 Jackson、Gson 或其他框架)。
  6. 将新解析器注册为 AnnotationMethodHandlerAdapter.customModelAndViewResolvers。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@ResourceMapping 接受来自 Ajax 请求的 JSON 的相关文章

  • 在对 VSTS API 的 Ajax 调用中使用 OAuth Bearer Token 而不是 PAT

    我已成功让我的 ASP NET MVC5 应用程序在服务器端用 C 读取和写入 VSTS 工作项 然而 为了获得最佳的用户体验 我真的想使用 Ajax 进行一些更新 我已经能够使用在我自己的帐户下创建的个人访问令牌 PAT 完美地完成此操作
  • JsonCpp - 当有 json::Value 对象时,我如何知道它的键名称?

    假设我有这个 Json 文件 id 0 使用 jsoncpp 我可以有一个Json Value通过这样做来对象 Json Value node root 0u id 好的 在代码的其他地方 我明白了node对象 我想从中获取一些信息 我可以
  • 在android中从JSON生成listview

    我对 Android 完全陌生 目前正在尝试从从我的服务器中提取的 JSON 数组生成列表视图 我已经阅读了很多教程 但没有运气 有一种独特的方法可以做到这一点 请您指出一些适合开始的资源 我读过了this http www josecgo
  • 优化数据可视化 Web 应用程序的性能

    我正在重写 3 年前编写的数据可视化网络工具 从那时起 浏览器的 JavaScript 引擎变得更快 所以我正在考虑将部分工作从服务器转移到客户端 在页面上 数据在表格和地图 或图表 中可视化 它使用相同的数据 但以不同的方式 因此准备显示
  • 如何在 Spring 中使 @PropertyResource 优先于任何其他 application.properties ?

    我正在尝试在类路径之外添加外部配置属性资源 它应该覆盖任何现有的属性 但以下方法不起作用 SpringBootApplication PropertySource d app properties public class MyClass
  • 如何在spring mvc框架中运行后台进程

    我有一个网络应用程序 使用 spring mvc 框架 它使得以下内容 用户将文件上传到服务器 立即进入成功页面 使用该文件运行后台进程 那么 我如何使用 spring mvc 框架来做到这一点呢 先感谢您 使用异步标记方法 你在这里有例子
  • 如何通过 javascript 和 ajax 调用 Scala 中的方法?

    我不知道我的标题是否有点误导 但这是我真正需要帮助的 我正在获取这个网址 get fb login fbEmail function data console log data 这是我的路线 GET fb login email prese
  • 在 jQuery DataTables 中的 Ajax 请求后在 td 中添加 html 元素

    我想在获得 ajax 响应后在 td 中添加 html 元素 结果将是这样的 tr td class mycus class span class mycus class2 XYZ span td td class mycus class
  • 如何更改 Spring OAuth2 上的response_type

    这是我使用 Instagram 进行 OAuth2 登录的配置 instagram client clientId clientId clientSecret clientSeret accessTokenUri https api ins
  • 从 json 数组获取值并执行 sql 插入

    这是我的数组 json 1 Device ID a9a3346be4375a92 Date 2012 05 31 Time 15 22 59 Latitude 51 4972912 Longitude 0 1108178 2 Device
  • Spring Thymeleaf - 调用服务方法布尔值来显示 HTML 项目

    在我的标题 HTML 中 我显示一个 UL LI 菜单 其中 LI 项目之一的可见性取决于服务方法调用 我试过这个 家庭控制器 Controller public class HomeController private static fi
  • 处理异步调用后重定向的正确方法

    我需要 如果满足某些条件 则对服务器进行ajax调用以更新数据 我的函数如下所示 function doSomething if something callSomethingAsync window location redirectur
  • 使用 AJAX 和 Jquery 自动完成功能填充表单数据

    我想使用自动完成所选项目来填写表单数据 我的自动完成工作正常 但我无法弄清楚如何通过从自动完成文本框中检索项目来填写表单数据 这是我的代码 HttpPost public JsonResult GetAutocomplete string
  • 使用 jQuery 更改 CSS 类属性

    有没有办法使用 jQuery 更改 CSS 类的属性 而不是元素属性 这是一个实际的例子 我有一个 div 类red red background red 我想转班级red背景属性 而不是具有类的元素red分配的背景 如果我用 jQuery
  • json_encode 创建格式错误的 JSON 数据?

    我有一个 codeigniter 应用程序将一些数据从数据库返回到视图 我正在尝试将其作为 json 数据发送回来 问题是返回的数据格式错误 它看起来像这样 2 5 Admin1 2 10 Admin2 当我在 jsonlint com 上
  • AJAX 表单正在向自身提交?

    我不知道今晚发生了什么 但我似乎无法让 AJAX 工作 提交表单后 它会使用 URL 中的值刷新页面 我正在使用具有提交处理程序的验证插件 但它仍然会刷新 我以前用过这个方法 没有出现任何问题 看看这里的页面 让我知道您的想法 div cl
  • 使用 Spring 和 Angular 进行 Html5 路由

    我正在尝试使用 Spring boot 和 Angular 1 5 实现 HTML5 路由 如下本文 https spring io blog 2015 05 13 modularizing the client angular js an
  • 使用 Jquery 传递隐藏字段值

    我有一个正常的hidden Input field我在哪里生成random string 我需要将其附加到我尝试将数据发布到另一个页面的 URL 中 我已经做到了这一点并且效果很好 url Upload html field1 newval
  • Pjax动画

    我终于让 pjax 工作了 但我还有另一个问题 如何添加一些 jquery 动画 如淡出 幻灯片旧内容和淡入 幻灯片新内容 默认情况下 pjax 只是更改内容 没有任何好看的效果 任何帮助将非常感激 此致 基本上 你有一堆事件 https
  • 具有 JPA 持久性的 Spring 状态机 - 存储库使用

    我试图弄清楚如何轻松使用 Spring 状态机 包括使用 JPA 进行持久化 这是我正在处理的问题 不兼容的数据类型 工厂和持久性 在程序的某个时刻 我想使用连接到用户的状态机 有用于此目的的存储库 项目spring statemachin

随机推荐