• spring mvc接收JSON格式的参数


    1.配置spring解析json的库

      <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.8</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
     

    2.设置spring mvc 的配置文件

    配置中资源解析器,messageConverters属性接收一个list,如果有其他解析器可以依次向其中添加,

    不同的请求content类型spring会选择不同的解析器,解析后的内容会通过特殊的注解传送到spring mvc controller的方法中。

    <beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
            <beans:property name="messageConverters">
                <util:list>
                    <beans:bean id="stringHttpMessageConverter" class="com.weishu.platform.integration.support.spring.ConfigurableStringHttpMessageConverter">
                        <beans:constructor-arg value="UTF-8"/>
                    </beans:bean>
                   
                    <beans:bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
                   
                </util:list>
            </beans:property>
        </beans:bean>

    3.配置spring mvc controller 

    使用注解@RequestBody配置参数为json对象,注意目前spring 配合 Jackson JSON库还不能正确处理泛型,如果将@RequestBody DeviceCommand[] deviceCommands 替换为List<DeviceCommand> deviceCommands ,spring 将不能将json解析为DeviceCommand对象,而是转换为LinkedHasMap对象。

     @RequestMapping(value = "/admin/deviceManagement/update_device_white_list_status", method = RequestMethod.POST)
     @ResponseBody
     public String updateUserWhiteListStatus(Model model, @RequestBody DeviceCommand[] deviceCommands) {
      JSONObject result = new JSONObject();
      try {
       deviceService.changeDeviceWhiteListStatus(Arrays.asList(deviceCommands));
       result.put("success", true);
      } catch (Exception e) {
       result.put("success", false);
       result.put("message", e.getMessage());
       e.printStackTrace();
      }
      return result.toJSONString();
     }

    4.在请求中设置json对应的content类型

      $.ajax({
        url : 'update_device_white_list_status.service',
        dataType : 'json',
        contentType : 'application/json',
        data : $.toJSON(deviceCommands),
        success : function(e) {
         $.messager.progress('close');
         if (e.success) {
          whiteListGrid.datagrid("reload");
          $.messager.alert('成功', '操作成功', 'info');
         
         } else {
          $.messager.alert('请注意', '操作失败:' + e.message, 'error');
         }
        },
        error : function(e) {
         $.messager.progress('close');
         $.messager.alert('请注意', '操作失败:' + e.message, 'error');
        }
       });
  • 相关阅读:
    基于vite2的react脚手架
    基于react hooks,zarm组件库配置开发h5表单页面
    IDEA远程debug
    test wizdeploy
    使用python完成接口自动化
    测试左移和测试右移
    性能测试监控
    网络基础面试题
    (案例8)java性能定位
    Jmeter分布式测试
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5091084.html
Copyright © 2020-2023  润新知