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){}
json转换对象本来理想的情况是func(${stu}) ,但是上⽂已提过function中参数不能是对象。所以不传对象,改function的参数,改成function func(name,age);调⽤func(${stu.name},${stu.age});
如果更进⼀步,要传递的对象是这样的
class Student{
String name;
int age;
Profess profess;//对象
List<Book> bookList;//list
}
这样把对象拆成多个参数的办法也⾏不通了。
可以使⽤⾃定义EL表达式
参考
标题的问题基本已经解决了,还需要注意⼀个⼩问题:
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 = String();
if (change !=0){
str = placeAll("\"","\'");//双引号转单引号
}
return str;
}
调⽤时,onclick = "func(${el:toJsonString(stu,1)})"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论