
可以用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的属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)