grails中根据domain类取各个属性约束:
/*******
*constraints 解析
*o 对象或类
*pp 对象属性
*返回该对象属性约束集合
*******/
def excconstraints(Object o,String pp){
// println us.constraints.("password").constraints.keySet()//获取限制属性集合
def por=[];//限制属性集合
def excc=[:];//对象属性限制集合
excc.put("pname",pp)
o.constraints.(pp.toString()).constraints.keySet().each{
por<<it;
}
Pattern p=Pattern.compile("(\\[)(.*?)(\\])");
Matcher m;
por.each{
// println it+":"+ us.constraints.("password").getAppliedConstraint(it).toString()//获取单个限制属性的值
def itStrV=o.constraints.(pp.toString()).getAppliedConstraint(it).toString();//获取单个限制属性的值,需要结合下面正则表达式
if(itStrV!=null&&itStrV!=null){
m= p.matcher(itStrV)
if(m.find()){
excc.put(it,m.group(2))
}
}
}
return excc;
}
调用方法:
excconstraints(new User(),"password") //constraints解析
或
excconstraints(User,"password") //constraints解析
返回值:
[pname:password, blank:true, nullable:false]