[英]Grails Command Object not getting Bound
我正在Grails Controller中为Command对象做POC,我遇到了没有发生绑定的障碍。
命令对象
public class Employee {
String name;
int age;
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
控制器:
class EmployeeController {
def index() {
render (" Employee Index Called ");
}
def emp(Employee employee){
println( employee.toString());
render(" Success");
}
}
我正在从其他客户打电话给emp行动,如下所示
方法:开机自检
网址 : http:// localhost:8080 / Grails / employee / emp
请求正文 : {“ name”:“ Vinod”,“ age”:34}
我将employee.name设置为null,并且employee.age = 0始终
我怀疑我的请求正文有误,但不确定。 请帮我哪里错了。
谢谢
据我所知,json不会自动绑定到命令对象(定义为动作方法arg),只有普通params
可以绑定。 要保留JSON请求,您必须致电
def json = request.JSON
然后您可以尝试将其绑定到您的对象:
def co = new MyCommandObject( json )
对于POST请求方法,我必须将“ Content-Type”标头设置为“ application / json”
Grails在POST的请求正文中从JSON构造命令对象(JSON到Java Object)
每当Grails找到“ Content-Type”标头作为“ application / json”时,它将自动将JSON中的请求正文解析为命令对象,并将其传递给控制器方法。
您可能还想通过执行以下操作使命令类可验证。 在Grails 3中:您的命令类可以实现grails.validation.Validateable特征。
import grails.validation.Validateable
class Employee implements Validateable{
String name
int age
}
在Grails 2.x中:您的命令类可以具有grails.validation.Validateable批注
@grails.validation.Validateable
class Employee implements Validateable{
String name
int age
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.