术语有误的情况大家可以多多留言,多多指教。下面我介绍下我用grails开发遇到的问题,以及解决方案。
1:第一个问题是jquery的。用了个多选可查询的插件,
Chosen:select下拉选择框美化插件。
比如说根据会员类型,角色动态加载不一样的值,因为角色用的是chosen插件,按照一般的处理,肯定会不行。
按照我下面的ajax请求就可以解决问题。
$.ajax({ url: "${ createLink(controller: 'dataAuth',action: 'getRolesByMemberType')}", data: { "memberType":memberType}, success: function (data) { $("#roleAttribute").empty(); var options =''; for (var i=0; i<data.roles.length; i++) { var obj = data.roles[i]; options += "<option value='"+obj.id+"'>"+obj.name+"</option>"; } $("#roleAttribute").append(options); $("#roleAttribute").trigger("chosen:updated");//重新加载插件 },error:function(XMLHttpRequest, textStatus, errorThrown){ showResult(XMLHttpRequest.responseJSON) } })$("#roleAttribute").trigger("chosen:update"); 这一句是解决的关键。
2:下面的问题是关于grails将值返回前台转换的问题。
List<Role> roles= dataAuthService.getRolesOutOfDataAuth(memberType);
一般情况下,在grails返回数据到前台就是 render(roles:roles) ,这样做的结果会返回的是一个字符串,那么在前台处理的时候会有问题。render( [roles:roles] as JSON) 这样操作就可以把值转换为json。
3:grails关于把两个不string进行合并。
比如说:
String a="1,2,3";
String b="4,5,6"
期待合并成一个字符串。java中的常规操作我就不说了。说下grails的处理吧
String c= [a,b].join(",") //返回的是1,2,3,4,5,6
如果是对象的中的一个属性
Role role1=new Role()
role1.name="1,2.3,4";
Role role2=new Role()
role1.name="5,6";
期待 合并得到个role.name="1,2,3,4,5,6"
String name= [role1,role2]*.name.join(",");