2016-10-22 16 views
2

コントローラにJSONデータを送信しようとしていますが、コントローラがnullを表示しています。コントローラーにjsonデータを取得できないため、コントローラーはJSON要求をヌルとして表示します。

以下

は私のコントローラのコードの内容です:

@Transactional 
def save(User user) { 

    println "${request.JSON}" 
    println "${request.JSON.owner}" 
    println request.format 
    user = new User(request.JSON) 

    if (user == null) { 
     transactionStatus.setRollbackOnly() 
     render status: NOT_FOUND 
     return 
    } 

    if (user.hasErrors()) { 
     transactionStatus.setRollbackOnly() 
     respond user.errors, view:'create' 
     return 
    } 

    user.save flush:true 

    respond user, [status: CREATED, view:"show"] 
} 

私は、このリンクで指定したすべてのものGrails send request as JSON and parse it in controller

URLマッピング試してみました:

:私はこれをしようとすると

post "/user/"(controller: "user",parseRequest:true, action:"save") 

curl --data '{"owner":"new owner"}' --header "Content-Type: application/json" http://localhost:8080/user/ 

私のように出力を得る:

コントローラーは "text/htmlの" タイプを受け入れ、

[:] 
null 
json 

私は残り-APIのプロファイルを使用してアプリケーションを作成しました:これは、コントローラから出力され

{"message":"Property [owner] of class [class com.sample.User] cannot be null","path":"/user/index","_links":{"self":{"href":"http://localhost:8080/user/index"}} 

"POST"操作ではなくJSON であり、コンテンツタイプとしてJSONを使用して既存のオブジェクトを更新できます。

マイドメインクラスには三つのフィールド

String owner 
String category 
Boolean deleted = false 

私はJSONリクエストを送信するために郵便配達を使用していますがあります。

{ 
    "owner":"some user", 
    "category":"rule01" 
} 

私は間違っていますか?

+0

grailsのバージョンは? –

+0

私はgrailsを使っています。3.2.1 –

+0

あなたの 'params'のダンプを投稿してください。 –

答えて

0

[編集]

さて、私たちは少しずつ行きます。 、お使いのブラウザ以下のこのコードの

http://localhost:8080/user/save?owner=the+beautiful&category=homo+sapiens 

でこのURLを試してみてください

@Transactional 
def save() {  
    println params.owner 
    println params.category 

    render (params as JSON) 
} 

とブラウザで受け取るものは何でも、ここに投稿。

+0

これを試しても、まだ "null"になっています –

+0

'println params'を実行したときの出力は? –

+0

私は出力として "null"を出力しています –

関連する問題