在jsp页面如何自动遍历对象的所有属性,不是写死的

在jsp页面如何自动遍历对象的所有属性,不是写死的,第1张

可以用java的反射机制来判断当前对象的类型,属性,动态调用各个属性的set,get方法

以下代码供参考

public void vo2vo(Object fromVo,Object toVo){

//ソースオブジェクトのフィールド配列を取得する

// Field []fromVoFields = fromVogetClass()getDeclaredFields();

//ターゲットオブジェクトのフィールド配列を取得する

Field []toVoFields = toVogetClass()getDeclaredFields();

//オブジェクトのフィールド名

String toVoFieldName;

//セットメソッドオブジェクト

Method toVoSetMethod = null;

Method fromVoGetMethod = null;

for(int index = 0; index < toVoFieldslength; index++){

try {

//当该オブジェクトのフィールド名を取得する

toVoFieldName = toVoFields[index]getName();

//オブジェクトのセットゲットメソッド名を取得する

StringBuffer toVoSetMethodNm = new StringBuffer();

StringBuffer fromVoGetMethodNm = new StringBuffer();

toVoSetMethodNmappend("set");

toVoSetMethodNmappend(toVoFieldNamesubstring(0,1)toUpperCase());

toVoSetMethodNmappend(toVoFieldNamesubstring(1, toVoFieldNamelength()));

fromVoGetMethodNmappend("get");

fromVoGetMethodNmappend(toVoFieldNamesubstring(0,1)toUpperCase());

fromVoGetMethodNmappend(toVoFieldNamesubstring(1, toVoFieldNamelength()));

//セットゲットメソッドオブジェクトを生成する

toVoSetMethod = toVogetClass()getMethod(toVoSetMethodNmtoString(), toVoFields[index]getType());

fromVoGetMethod = fromVogetClass()getMethod(fromVoGetMethodNmtoString(),new Class[]{});

Object value = fromVoGetMethodinvoke(fromVo, new Object[]{});

//当该オブジェクトのセットメソッドを呼び出す

//toVoSetMethodinvoke(toVo,StringvalueOf(index));

toVoSetMethodinvoke(toVo,value);

} catch (SecurityException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (NoSuchMethodException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

如果这个数组不是json的话,就可以for(var i=0;i <arraylength;i++{}来获取数组中的每一个对象,然后在{}里添加:

if(typeof array[i] == "object){

for(var key in array[i]){

//这里的array[i][key]就能遍历array数组里的对象的属性值了,key就是属性名,

}

}

如果最初的array也是个对象的话,就把for(var i=0;i <arraylength;i++{}改成for(var i in array){}就行了

作者:fighterleslie

链接:>

<mx:itemRenderer>

<mx:Component>

<mx:Text text="{datacardname}"/>

</mx:Component>

</mx:itemRenderer>

//1、定位select1

var arr = documentgetElementByNames("标签的name属性值");

//2得到的是一个数组,遍历数组

for(var i=0;i<arrlength;i++){

var select1_v = select1value;

}

先根据name选择器选中标签,然后value获取属性值

在JavaScript中,遍历一个对象的属性往往没有在其他语言中遍历一个哈希(有些语言称为字典)的键那么简单这主要有两个方面的原因:一个是,JavaScript中的对象通常都处在某个原型链中,它会从一个或多个的上层原型上继承一些属性第二个原因是,JavaScript中的属性不光有值,它还有一些除了值以外的其他特性,其中一个影响属性遍历的特性就是[[Enumerable]],如果该值为true,则称这个属性是可枚举的,否则反之

知道了这些,我们就可以把属性的遍历分为四种情况

注:示例代码中,我们要遍历的对象是浏览器中的window,环境为Firefox 19,代码运行在空白页面中的script标签里没有Firebug或者其他调试工具的影响(会导入一些全局变量,console等)

1遍历可枚举的自身属性

可枚举的意思就是该属性的[[Enumerable]]特性为true,自身属性的意思就是该属性不是从原型链上继承下来的

(function () {

var propertys = Objectkeys(window);

alert(propertyslength); //3

alert(propertysjoin("\n")); //window,document,InstallTrigger,除了最后一个是火狐私有的属性,原来window对象只有两个可枚举的自身属性window属性指向window对象自身,一般没什么用

})()

2遍历所有的自身属性

特性为不可枚举的属性也并不是遍历不到,ES5给我们提供了getOwnPropertyNames方法,可以获取到一个对象的所有自身属性

(function () {

var propertys = ObjectgetOwnPropertyNames(window);

alert(propertyslength); //72

alert(propertysjoin("\n")); //Object,Function,eval等等

})()

3遍历可枚举的自身属性和继承属性

继承属性怎么遍历,你应该知道,就是最常用的for in遍历

(function () {

var getEnumPropertyNames = function (obj) {

var props = [];

for (prop in obj) {

propspush(prop);

}

return props;

}

var propertys = getEnumPropertyNames(window);

alert(propertyslength); //185

alert(propertysjoin("\n")); //addEventListener,onload等等

})()

4遍历所有的自身属性和继承属性

这种遍历主要用在各种js调试工具的代码补全功能上比如Firebug的

(function () {

var getAllPropertyNames = function (obj) {

var props = [];

do {

props = propsconcat(ObjectgetOwnPropertyNames(obj));

} while (obj = ObjectgetPrototypeOf(obj));

return props;

}

var propertys = getAllPropertyNames(window);

alert(propertyslength); //276

alert(propertysjoin("\n")); //toString等

})()

在实际开发中可能会遇到需要获取对象的所有属性,这时你可能会自己来遍历一遍获取,其实原生js已经为我们提供了一个方法,他就是Objectkeys(),它返回一个数组,就可以结合forEach方法遍历对象。

1对象

// 1对象

var a = {

a : 123,

b : 'asd',

c : function() {

consolelog( 'haha' );

}

};

consolelog( Objectkeys( a ) ); // [ 'a', 'b', 'c' ]

2数组

// 2数组

var b = [ 123, 21, 31 ];

consolelog( Objectkeys( b ) ); // [ '0', '1', '2' ]

3构造函数

// 3构造函数

function c() {

thisaa = 123;

thisbb = 'asdas';

thiscc = function() {

}

consolelog( Objectkeys( c ) ); // []

4实例化对象

// 4实例化对象

var d = new c();

consolelog( Objectkeys( d ) ); // [ 'aa', 'bb', 'cc' ]

5字符串

// 5字符串

var e = 'sdf123';

consolelog( Objectkeys( e ) ); // [ '0', '1', '2', '3', '4', '5' ]

以上就是关于在jsp页面如何自动遍历对象的所有属性,不是写死的全部的内容,包括:在jsp页面如何自动遍历对象的所有属性,不是写死的、如何获取一个数组里每一个对象的每一个属性、如何遍历JS对象中所有的属性 包括enumerable=false的属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9713972.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存