簡體   English   中英

Grails命令對象未綁定

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM