• 415 Unsupported Media Type


    测试spring mvc  @ModelAttribute 属性时报错

    jsp 文件

    <%@ page language="java" import ="java.util.*" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javaScript" src="${pageContext.request.contextPath }/js/jquery-3.6.0.min.js">
    </script>
    </head>
    <body>
        ${requestScope.a} <br/>
        ${sessionScope.a} <br/>
        ${requestScope.uu.name} <br/>
        ${requestScope.user.name} <br/>
        
    <form name="Form2"  id="form2" action ="" method="post"  enctype="multipart/form-data"> 
         姓名:<input type="text" name="name" id="name">
         id:<input type="text" name="id" id="id">
     <input type="button" value="测试" onclick="testJson()" />
    </form> 
    </body>
    <script type="text/javascript">
    function testJson() {
        var name = $("#name").val();
        var id = $("#id").val();
        alert("姓名"+name+",id:"+id);
        $.ajax({
            //请求路径
            url : "testModelAttribute",
            //请求类型
            type : "post",
            //data表示发送的数据
            data :{
                    "name" : name,
                    "id" : id
                }, 
            //定义回调响应的数据格式为JSON字符串,该属性可以省略
            dataType : "json",
               /* contentType :'application/json',  */
            //成功响应的结果
            success : function(data) {
                alert(data);
                if (data != null) {
                    alert("输入的用户名:" + data.name + ",密码:" + data.id);
                }
            }
        });
    }  
     
    
    </script>
    </html>

    controller 类

    @Controller
    public class TestAttribute {
    
        @Resource
        private HibernateTemplate hibernateTemplate;
        
        public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
            this.hibernateTemplate = hibernateTemplate;
        }
        @ModelAttribute
        public void getUser(@RequestParam (value ="id",required =false) String id,Map<String, Object> map) {
            System.out.println("进入了查询方法 getuser");
            User user = null ;
            if (id!=null) {
                String sql= " FROM User WHERE id = :id ";
                List<User> list= (List<User>) hibernateTemplate.findByNamedParam(sql, "id", Integer.valueOf(id));
                user = list.get(0);
            }
            map.put("user", user);
            System.out.println("user1:"+user);
        }
        /**
         *      测试 @ModelAttribute 属性 ,既如果页面上修改数据 需要保存数据 但是 不能显示敏感字段时 
         *      可以从数据查询后 返回页面这样修改数据就不会把特俗字段置空
         *      例如 测试修改 用户名字 页面又不能显示用户密码  逻辑根据页面ID去数据查询到 user 实体 返回页面,修改的时候直接用实体修改就有密码了 
         * @param user
         * @return
         */
        @RequestMapping("/testModelAttribute")
        @ResponseBody
        public  User testModelAttribute(@RequestBody User user) {
            System.out.println("user2:"+user);
            return user;
        }
    }

    看视频上说 如果 Ajax 接受参数为pojo 实体类就要加上 注解 @RequestBody 用

    原先以为时 Ajax没有配置  contentType :'application/json', 加上之后获取不到参数值 获取的user 是null

    后来去掉了 jsp 的contentType  配置 和  @RequestBody 参数 可以正常测试了,不知道时什么问题。也可能是我的jar包版本太低

    修改后的方法

        @RequestMapping("/testModelAttribute")
        @ResponseBody
        public  User testModelAttribute(User user) {
            System.out.println("user2:"+user);
            return user;
        }
  • 相关阅读:
    MySQL服务器SSD性能问题分析与测试
    MySQL 5.7基于GTID复制的常见问题和修复步骤(一)
    用pt-stalk定位MySQL短暂的性能问题
    服务器IO瓶颈对MySQL性能的影响
    MySQL主从检验一致性工具pt-table-checksum报错的案例分析
    MySQL DROP DB或TABLE场景下借助SQL Thread快速应用binlog恢复方案
    MySQL服务器发生OOM的案例分析
    NUMA导致的MySQL服务器SWAP问题分析与解决方案
    python学习之-- 生成唯一ID
    python练习之-计算器
  • 原文地址:https://www.cnblogs.com/zjf6666/p/14627177.html
Copyright © 2020-2023  润新知