2017-03-13 11 views
0

マイクロサービスアーキテクチャ(JAX-RS)とnodeJS APIに基づいてプラットフォームを開発しています。IllegalStateException:ターゲットオブジェクトはnullであってはなりません。Springブート

データベースにオブジェクトを追加する際に問題が発生します。なぜなら、常にスプリングブートによってヌルとマークするためです。

@RequestMapping(value="/Add") 
    public Actifs AjouterActifs(@RequestBody Actifs act){ 

     return Actif.saveT(act); 
    } 

*ここでは、オブジェクトを追加するコードノードAPI "Actifs":ここでは

*は、私のRESTコントローラーコード(JAX-RS)がある

app.post("/act/add",function (req,res) { 

     var addActif = JSON.stringify(req.body); 
     console.log("params: "+addActif); 

     try { 
      http.get(url+"/Add",+addActif, function (response) { //problem is here "addActif is null" 
       var dataJson =''; 
       response.on('data',function(data){ 
        dataJson += data; 
       }); 
       response.on('end',function(){ 
        try 
        { 
         var addAct = JSON.parse(dataJson); 
        } 
        catch(err) { 
         console.log('erreur de retourner l\'actif -->', +err); 
        } 
        res.json(addAct); 
       }); 
      }); 
     } 
     catch(e) { 
      console.log("erreur d'ajouter les info d'actif -->", +e); 
     } 
    }); 

*郵便集配人: enter image description here

このエラーが発生します:

org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing:

ノードJSからJAX-RSサービスにnullオブジェクトが渡されるのを避けるにはどうすればよいですか?

は、クエリパラメータとして

http.get(url+"/Add?act="+addActif, function (response) { 
    ... 
} 

しかし、あなたのSpringMVCエンドポイントがリクエストボディにActifオブジェクトを見つけることを期待を追加するactifを送信している

答えて

0

私はこの

app.post("/act/add",function (req,res) { 

     var addActif = JSON.parse(req.body); //parse object 
     console.log("params: "+addActif); 

     try { 
      http.get(url+"/Add",addActif, function (response) { // delete '+' 
       var dataJson =''; 
       response.on('data',function(data){ 
        dataJson += data; 
       }); 
       response.on('end',function(){ 
        try 
        { 
         var addAct = JSON.parse(dataJson); 
        } 
        catch(err) { 
         console.log('erreur de retourner l\'actif -->', +err); 
        } 
       res.json(addAct); 
      }); 
     }); 
    } 
    catch(e) { 
     console.log("erreur d'ajouter les info d'actif -->", +e); 
    } 
}); 
0

、私を助けてくれてありがとう

@RequestMapping(value="/Add") 
public Actifs AjouterActifs(@RequestBody(required=false) Actifs act) { 
    ... 
} 

オプション1:@RequestParameter("act") Actifs actを使用し、エディタを登録してオブジェクトfを解析しますromクエリパラメータ文字列(this questionを参照)。

オプション2:実際にActif jsonをリクエストボディとして送信します。 GETの代わりにurl + "/Add"にPOST要求を実行します。その実装にはhttp.requestを使用する必要があります。

さらに@RequestBodyrequired=falseなし)を使用することをお勧めします。これにより、パラメータがnullでなくてはならないことが保証され、そうでない場合にはアプリケーションが高速で失敗するようになります。

+0

のようなコードを変更することで問題を解決したが、ご返信卿いただきありがとうございます、あなたが持っているように、私は、コードを変更しようとしました: 'Http.get(URL +「/追加します」、私は '@RequestBody(required = false)'を削除しました。この問題があります - > "HttpMessageNotReadableException:必須要求本体がありません"、ありがとうございました – emile01

+0

(+ addActif、function(response)要求の本文がnodejsから送信されるか、または期待されるオブジェクトがクエリパラメータから解析されているかどうかを確認してください。 – Pyranja

+0

私はしようとしています。受信したオブジェクトをノードjのURLからWebサービスJAX-RSに送信します。 しかし、私はまだオブジェクトがnullです。私はコードの最後の更新を入れました。 – emile01

関連する問題