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<Book> 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)})"

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值