• 解决Spring Mvc中接受参数绑定重名的方法


    html页面

    <form method='post' action='url'>
         用户名 <input type='text' name='name'>
         用户id <input type='text' name='id'>
         食品名 <input type='text' name='name'>
         食品id <input type='text' name='id'>
         <input type='text' name='age'>
         <input type='text' name='price'>
    </form>

    实体类

    public class User{
       private String name;
       private String id;
       private Integer age;
       //getter 和setter
    }
    ----------------------------------
    public class Food{
       private String name;
       private String id;
       private Double price,
       //getter 和setter
    }

    controller

    @requestMap(value={'/order/book'})
    public string show(User u,Food f){}

    在上述情况下User 和food都不能得到正确的name和id,或者说更本得不到

     

    1.建立一个中间桥梁, 拆分有所的属性

    建立一个中间桥梁UserFoodDto对象

    public class UserFoodDto{
      private String uid; //用户id
      private String uname; //用户名
      private String fid; //食物id
      private String fname; //食物名称
      private Double price, //食物价格
      private Integer age; //用户年龄   
      //getter 和setter
    }

     修改前台页面的 name值

    <form method='post' action='url'>
      用户id <input type='text' name='uid'>
      用户名 <input type='text' name='uname'>
      食品id <input type='text' name='fid'>
      食品名 <input type='text' name='fname'>
      <input type='text' name='age'>
      <input type='text' name='price'>
    </form>

     controller

    @requestMapping(value={'/order/book'})
    public string show(UserFoodDto dto){
      //创建用户和食物实例
      User u = new User();
      Food f = new Food();
       //分别设置属性
      u.setUid(dto.getUid());
      f.setFid(dto.getFid());
      u.setName(dto.getUname());   f.setName(dto.getFname());   u.setAge(dto.getAge);   f.setPrice(dto.getPrice);   ..... }

     缺点是:如果数据量大,100百个字段,修改的地方很多,而且一个dto,拆分也很费力,因此不建议在数据量大的情况下使用

    2.使用桥连接,拆分冲突的属性

    前端页面

    <form method='post' action='url'>
      用户名 <input type='text' name='uname'>
      用户id <input type='text' name='uid'>
      食品名 <input type='text' name='fname'>
      食品id <input type='text' name='fid'>
      <input type='text' name='age'>
      <input type='text' name='price'>
    </form>

     中间桥梁类

    ---将冲突的字段专门建立一个javaBean
    public Class UFBridge{ 
      private String uname;
      private String uid;
      private String fname;
      private String fid;
    }

     controller

    @requestMapping(value={'/order/book'})
    public string show(User u,Food f,UFBridge ufb){
      u.setId(ufb.getUid);
      u.setName(ufb.getUname());
    
      f.setId(ufb.getFid);
      f.setName(ufb.getUname());
    }

     3.创建一个类包含User和Food

    vo对象

    public class UserFoodVo{
      private User user;
      private Food food;
      //省略getter和setter方法
    }

     前台页面

    <form method='post' action='url'>
      用户名 <input type='text' name='user.name'>
      用户id <input type='text' name='user.id'>
      食品名 <input type='text' name='food.name'>
      食品id <input type='text' name='food.id'>
      <input type='text' name='user.age'>
      <input type='text' name='food.price'>
    </form>

     controller

    @requestMapping(value={'/order/book'})
    public string show(UserFoodVo vo){}
  • 相关阅读:
    使用jQuery实现伪分页
    使用jQuery实现option的上移和下移
    理解Flux架构
    React 入门学习笔记1
    ES6新特性6:模块Module
    ES6新特性5:类(Class)和继承(Extends)
    ES6新特性4:字符串的扩展
    ES6新特性3:函数的扩展
    ES6新特性2:变量的解构赋值
    ES6新特性1:let和const
  • 原文地址:https://www.cnblogs.com/guo-rong/p/9464014.html
Copyright © 2020-2023  润新知