精华内容
下载资源
问答
  • * 将旧对象的属性值与新对象的属性值做比较 记录修改的属性值名称 * @param oldObject 旧对象 * @param newObject 新对象 * @return 修改对象属性值名称集合 */ public static List<String> ...
    private static Logger logger= LoggerFactory.getLogger(ObjectFieldUtil.class);
    
    	/**
    	 * 将旧对象的属性值与新对象的属性值做比较 记录修改的属性值名称
    	 * @param oldObject 旧对象
    	 * @param newObject 新对象
    	 * @return 修改的对象属性值名称集合
    	 */
    	public static List<String> getChangeList(Object oldObject, Object newObject) {
    		//修改的对象属性值名称集合
    		List<String> changeList=new ArrayList<>();
    		//根据对象获取属性值名称
    		String[] filedNameArray=getFieldName(oldObject);
    		//对比两个对象属性值是否相等
    		for(int j=0 ; j<filedNameArray.length ; j++){     //遍历所有属性
    			String fieldName = filedNameArray[j];    //获取属性的名字
    			//忽略版本对比
    			if("serialVersionUID".equals(fieldName)){
    				continue;
    			}
    			Object valueOld = getFieldValueByName(fieldName,oldObject);//旧对象的值
    			Object valueNew = getFieldValueByName(fieldName,newObject);//新对象的值
    			if(valueOld == valueNew || valueOld.equals(valueNew)){
    				//属性值相同
    			}else{
    				//属性值不同 ,记录属性名称
    				changeList.add(fieldName);
    			}
    		}
    		return changeList;
    	}
    
    
    	/**
    	 * 获取属性名数组
    	 * */
    	private static String[] getFieldName(Object o){
    		Field[] fields=o.getClass().getDeclaredFields();
    		String[] fieldNames=new String[fields.length];
    		for(int i=0;i<fields.length;i++){
    			fieldNames[i]=fields[i].getName();
    		}
    		return fieldNames;
    	}
    
    	/**
    	 * 根据属性名获取属性值
    	 * @param fieldName 属性名称
    	 * @param o 对象
    	 * @return
    	 */
    	private static Object getFieldValueByName(String fieldName, Object o) {
    		try {
    			String firstLetter = fieldName.substring(0, 1).toUpperCase();
    			String getter = "get" + firstLetter + fieldName.substring(1);
    			Method method = o.getClass().getMethod(getter, new Class[] {});
    			Object value = method.invoke(o, new Object[] {});
    			return value;
    		} catch (Exception e) {
    			logger.error("根据属性名获取属性值异常:"+e.getMessage(),e);
    			return null;
    		}
    	}

     

    展开全文
  • 修改对象属性的方法

    2019-09-23 23:36:22
    为了修改属性性,使用上一页中介绍的如果对象不具备你打算修改的属性,技术为对象添加属性,赋予一个新。则会将其添加到对象上。 方法一: 方法二: 也可以用方括号语法来更新对象的属属性的新在等号的...

    为了修改属性性,使用上一页中介绍的如果对象不具备你打算修改的属性,
    技术为对象添加属性,赋予一个新值。则会将其添加到对象上。

    方法一:

     

    方法二:

    也可以用方括号语法来更新对象的属属性的新值在等号的右边。再次说明,性(不能用于更新方法)。对象名后跟上方如果想要修改的属性不存在,此动作会将
    括号,方括号里面是属性名称。这个属性添加给对象。

     


    删除对象的属性:

    若要删除对象的属性,方法是delete关键字后跟上对象名和属性。

    查看对象的属性:

    若只是希望弄清楚属性的值,将其设置为一个空字符串。

     

    转载于:https://www.cnblogs.com/max-hou/p/8832459.html

    展开全文
  • 1、参数接受一个对象,以key,value形式表示; 2、参数和变量名称一致,可用一个代替(es6新语法特性) 如上图所示,在this.data中设置ceshi这条数据,在方法中,我们定义ceshi变量让其等于that.data.ceshi; ...

    一、setData()方法:

    1、参数接受一个对象,以key,value的形式表示;
    2、参数和变量名称一致,可用一个值代替(es6新语法特性)

    在这里插入图片描述
    如上图所示,在this.data中设置ceshi这条数据,在方法中,我们定义ceshi变量让其等于that.data.ceshi; 然后对ceshi进行操作,其实就是对that.data.ceshi进行操作,而that.setData({ceshi})就等同于that.setData({ceshi : ceshi }) ; 第一个ceshi 是that.data.ceshi, 第二个ceshi 是我们定义的变量ceshi。通过打印的结果可以看到,数据已经添加上了。

    3、可以设置一个或多个data数据

    this.setData({
       list:'change data',
       info:'change data'
    })
    

    4、key可以以数据路径的形式给出(路径形式的key必须带引号)(经小程序更新后,现已支持不加引号的写法)

    this.setData({
        'list[0].title' : 'change data',   //数据路径key必须带''号
        'list[0].num' : 'change data'      //数据路径key必须带''号
    })
    

    5、key值可以为变量,为变量的时候要用[ ]引起来

    page({
      data:{
        todos:[{id:0,text:'abc',isDelete:false}]
      },
      change(e){
        var index = e.currentTarget.dataset.id;
        var deletedtodo='todos['+index+'].idDelete';
        this.setData({
           [deletedtodo]:true
        })
      }
    })
    

    如图所示 deletedtodo为变量作为key值的时候要用[ ] 包裹起来。

    6、直接修改this.data,虽然会改变数据,但是页面不会重新渲染,无法改变页面状态,会造成数据不一致的情况

    7、单次设置的数据不能超过1024KB,请尽量避免一次设置过多的数据

    8、不需要在this.data中预先定义,使用setData()方法会自动创建该数据

    this.setData({
        name:'张三'   //name在this.data中未定义,但不会报错
    })
    

    name在this.data中未定义,但是这种写法不会报错,而且还会在this.data.zhong创建name这条数据。可以用this.data.name获取到该条数据

    二、对数组的操作,json操作和数组一样。

    1、数组的增加:
    在这里插入图片描述
    我们可以自己组装一个对象如上图的obj,然后用push()方法将其添加到数据的最后。注意push的数据的index是+1的,也就是说原本数组中index依次为0,1,2,新增加的就是3,依次类推。如果想将数据插入到数据某个位置,那么可以合理运用concat()的方法将数据合并到数据中。
    在这里插入图片描述
    也可以用splice()方法添加,第一个参数是插入的位置,第二个参数设为0,则为添加,若为大于0的的数字则为要删除的个数,第三个参数只有在第二个参数为0是使用,是添加的内容。这种方法非常灵活,只需要改变第一个参数就可以将内容添加到数据的任何一个地方。下面附上splice的用法;

    Splice

    • splice()方法向/从数组中添加/删除元素,然后返回被删除的元素组成的数组。
    • 用于数组对象。
    • arr.splice(index, howmany, item1,…, itemX)
    参数 描述
    index 必需。整数,规定了添加/删除元素的位置,使用负数可从数组结尾处规定位置。
    howmany 必需。要删除的元素的数量。如果设置为0,则不会删除元素。如果添加元素则这里应该设置为0.
    itemX 可选。向数组添加的新项目。在添加的时候用。
    • 注意:这个方法会对原数组做出修改。获得的也是新数组。

    2、数组的删除:
    在这里插入图片描述
    删除也是用splice()方法实现的,ceshi.splice(1,1)就是从index为1的位置开始,删除1个元素。splice()用法参上。

    3、数组的修改:
    在这里插入图片描述
    将key值以数据路径的形式赋值,可以达到修改数据中的某一条,此处,我们只将ceshi[0].value的值改变为’oooo’,其他数据未发生变化。
    在这里插入图片描述
    也可以用这种方法修改数组的参数,对这种方法有疑问的可以参考setData()第二条。

    转自这位仁兄:https://blog.csdn.net/namecz/article/details/79623550

    展开全文
  • 原文:C#获取EF实体对象或自定义属性字段名称在年前上班时候遇到了一个问题是这样描述:我前台设计一个页面,是标签和文本框,当用户修改了哪个文本框的值,将该修改的值修改的值,该对应字段...
    原文:C#获取EF实体对象或自定义属性类的字段名称和值

    在年前上班的时候遇到了一个问题是这样描述的:我前台设计一个页面,是标签和文本框,当用户修改了哪个文本框的值,将该修改前的值、修改后的值,该值对应的字段,该值对应的行id获取到保存到数据库的某张表里。现在数据库有一张表,结构如下:

    修改记录表
    ID   修改行ID 修改列名称 修改前的值 修改后的值 所属修改批次 修改时间
    1   1 test 10 11 2013-10-11 第一批次 2013-10-11

    思路:

    1、将数据封装成实体对象传到后台。整套下来是用MVC的机制实现的

    2、利用反射。获取对象的字段名称、修改前的值、修改后的值

    3、调用保存方法。将修改记录保存到数据库。

    4、下面贴上主要实现代码,里面包含设计实现思路:

     1             //判断字段是否修改(原值、旧值做比较),student为前台传入的数据对象
     2             var oldModel = this.db.Students.Where(p => p.ID == student.ID).FirstOrDefault();
     3             if (oldModel == null)
     4             {
     5                 return "返回数据为空!";
     6             }
     7 
     8             //获取当前对象的属性数组
     9             PropertyInfo[] currentPro = student.GetType().GetProperties();
    10             //获取原始对象的属性数组
    11             PropertyInfo[] oldPro = oldModel.GetType().GetProperties();
    12             foreach (PropertyInfo old in oldPro)
    13             {
    14                 foreach (PropertyInfo curtrent in currentPro.
    15                     Where(p => !string.IsNullOrEmpty(p.Name))
    16                 {
    17                     //获取当前数据
    18                     object currentColumnValue = curtrent.GetValue(student, null);
    19                     //获取原始数据
    20                     object oldColumnValue = old.GetValue(oldModel, null);
    21 
    22                     //判断值是否相等
    23                     if (currentColumnValue.ToString() != oldColumnValue.ToString())
    24                     {
    25                         //保存新值/旧值到数据库
    26                         SaveStudentLog(oldModel.ID, oldColumnValue.ToString(), currentColumnValue.ToString(), old.Name);
    27                         break;
    28                     }
    29                 }
    30             }
    通过反射获取对象包含的字段名称和值
     1  private void SaveStudentLog(int id, string oldValue, string currentValue, string column)
     2         {
     3             StudentLog studentLog = new StudentLog();
     4             var student = this.db.Students.Where(p => p.ID == id).FirstOrDefault();
     5             if (student == null)
     6             {
     7                 return;
     8             }
     9 
    10             studentLog.Student = student;
    11             studentLog.ValueOfOld = oldValue.Trim();
    12             studentLog.ValueOfNew = currentValue.Trim();
    13             studentLog.FieldName = column;
    14             studentLog.FieldDesc = "1223";
    15             studentLog.UserAccount = "123";
    16             studentLog.UserRoleName = "34";
    17             studentLog.UserTrueName = "123";
    18             studentLog.UpdateDesc = "123";
    19             studentLog.UpdateTime = DateTime.Now;
    20             studentLog.UpdateTimeTag = DateTime.Now.Hour.ToString() +
    21                                        DateTime.Now.Minute.ToString() +
    22                                        DateTime.Now.Second.ToString() +
    23                                        DateTime.Now.Millisecond.ToString();
    24             this.db.StudentLogs.AddObject(studentLog);
    25             this.db.SaveChanges();
    26         }
    保存记录到数据库

    这样下来,通过调用一个保存编辑函数SaveStudentLog(行ID,修改前的值,修改后的值,列名)即可将修改的值信息保存到记录表里。

    展开全文
  • 场景: 比如后端返回给一个数组对象,但是名字不是我们想要,我们可以修改key变成我们想要数组。 比如把下面第一个数组中key值的名称改成第二个数组中key值的名称 arr: [ { name: '小太阳', year: 18}, { ...
  • 我们在开发中经常会遇到修改对象中单个属性值的需求,如果我们把整个对象作为参数,那么当对象较大时系统性能将大大折扣,而我们仅仅需要更新是对象某一个属性,所以我们可以将需更新对象属性名称和值作为...
  • #在对象属性进行配置文件方式注入时,属性的名称不能为name,会对系统文件进行冲突,导致属性 #注入被覆盖为Administrator(管理员)名称 server: port: 8080 user: username: 张三 age: 20 sex: true birth: ...
  • 以下是本人自己在使用struts标签来得到对象的值源代码:  学校列表    学校编号  学校名称  学校地址  增加学校  修改学校  删除学
  • 保护对象的属性

    2020-06-14 22:40:55
    在js中对象的属性,在没有做任何处理的情况下,是随时可以修改属性值 、添加新属性,删除属性的,非常不安全,对于一些重要的数据,我们不希望它不能进行删除,修改等操作。所以这时候,就诞生了相关的方法。 对象...
  • Vue Watch 深度监听对象属性值无效

    千次阅读 2020-08-06 11:21:50
    一、watch 深度监听 watch: { formData: { deep: true, handler(nv) { console.log("对象发生改变",... // this.formData.name = "这是修改的名称"; // this.formData.title = "这是修改的标题"; // this.$set
  • 如果系统将修改的属性名称也显示出来,这样就能更直观的显示类中的哪一个属性的修改了。然后Java中只能获取属性的名称,也就是英文标识的属性名,但是一般我们都会在属性后面添加属性的注释,但是Java不提供注释...
  • 因此,你代码任何部分都可以轻松地将bird的名称更改为任何。联想到像密码和银行帐户可以轻松被你代码库任何部分更改,这可能会导致很多问题。 使属性为私有最简单方法是在构造函数中创建一个变量。这...
  • 我做了一个图书修改功能页面,就是用户点击修改时,就把action中获取到图书信息在修改页面展示出来,现在action中获取到图书对象的信息,在jsp页面中一直不显示,求大大帮忙,如何解决这个问题,不胜感激 ...
  • MVVM中对象属性的定义

    2019-03-18 22:03:19
    参数二定义或修改的属性名称。 参数三定义或修改的属性描述符。 返回值 被传递给函数的对象。 属性描述符 对象里目前存在的属性描述符有两种主要形式:数据描述符和存取描述符。数据描述符是一个具有值的属性...
  • 通常我们会将编程语言分为静态和动态。...当类或者对象的属性在需要增加的时候,对于不方便修改源码的情况下,我们可以选择动态的对其添加属性。 动态给对象添加属性 对象属性只在当前对象生效,在其...
  • 1.自定义工具类 - 通过该工具类实现对象属性的修改属性名称获取、深度克隆属性的内容,使用业务抽象层面初始化改造、遍历修改或动态修改任意类属性等场景,具体代码示例如下importjava.lang.reflect.Field;...
  • 动态添加属性当类或者对象的属性在需要增加的时候,对于不方便修改源码的情况下,我们可以选择动态的对其添加属性。动态给对象添加属性对象属性只在当前对象生效,在其他对象中是无法调用的。...
  • PropertyGrid属性值的汉化

    千次阅读 2007-01-16 11:54:00
    PropertyGrid是微软提供的一个非常智能化的控件,能够把对象...否则属性控件中的属性名称是中文了,而属性值还是英文的!此时我们可以使用TypeConverter.下面的例子把Person类的成年属性布尔值汉化:using System.Compo
  • Ext修改选中grid的值

    2011-04-01 22:40:00
    this.formWin.formPanel.getForm().loadRecord(object); //object表示改grid中选中record对象,form中name和grid columns属性的name名称一致
  • js可以通过点(.) 或 方括号([]) 运算符来获取属性的值,运算符左侧应当是一个表达式,它返回一个对象。对于点(.)来说,右侧必须是一个以属性名称命名简单标识符。对于方括号([])来说,方括号里必须是一个计算结果...
  • 作用: 设置对象属性的,或者修改对象属性的,并且返回该对象。 Object.defineProperty(obj, prop, descriptor) obj: 对象名称 prop: 要设置的属性名 descriptor: 将被定义或修改的属性描述符,该参数是一个...
  • 如果你想结合实例上运行几个GameObjects...下一步是实例正确的游戏对象,然后请你修改的属性(位置,尺寸,材质...)。每个实例都是独立的,具有您可以随意修改的属性,并且同一个GameObject的其他实例不会被更改。...
  • Object.definedProperty方法可以在一个对象上直接定义一个新的属性、或修改一个对象已经存在的属性,最终返回这个对象。Object.defineProperty(obj, prop, descriptor)参数:obj:被定义或修改属性的对象;prop :要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 527
精华内容 210
关键字:

修改对象名称的属性值