js方法function中传递的参数是对象

首先js中的参数不能是对象,所以要把对象转成json字符串才能传。

 

第一种情况,传递的对象是js的var对象,那么使用JSON.stringify()可以转换成json字符串,使用JSON.parse()可以重新转换成对象。

 

第二种情况,在jsp之类的页面上要调用js的function方法,参数是对象,对象是用el表达式表示的。简单的解决方法是不传对象。

比如要传递的对象是

class Student{

String name;

int age;

}

 

js方法

function func(stu){}

 

本来理想的情况是func(${stu}) ,但是上文已提过function中参数不能是对象。所以不传对象,改function的参数,改成function func(name,age);调用func(${stu.name},${stu.age});

如果更进一步,要传递的对象是这样的

class Student{

String name;

int age;

Profess profess;//对象

List bookList;//list

}

 

这样把对象拆成多个参数的办法也行不通了。

可以使用自定义EL表达式

参考

https://blog.csdn.net/sun5769675/article/details/50352847

 

标题的问题基本已经解决了,还需要注意一个小问题:

onclick调用function方法时,onclick = "func(${el:toJsonString(stu)})"

json字符串的双引号和onclick的双引号起冲突,把json字符串的双引号改成单引号就可以解决这个问题,改了一下toJsonString方法:

public static String toJsonString(Object obj,int change){

// 将java对象转换为json对象

JSONObject json = JSONObject.fromObject(obj);

String str = json.toString();

if (change !=0){

str = str.replaceAll("\"","\'");//双引号转单引号

}

return str;

}

调用时,onclick = "func(${el:toJsonString(stu,1)})"

你可能感兴趣的:(js方法function中传递的参数是对象)