2016-12-21 15 views
0

現時点では、Personの詳細と会社の詳細を入力するHTMLのビューが1つあります。私は安らかな春のMVCフレームワークを使用しています。jsonの値をspringの2つのオブジェクトにバインドするMVC restful

私はjsonを作成し、Ajaxを使用してRestcontrollerに送信します.URLパターン作成メソッドは、.e.gと呼ばれます。 jsonは

{"name":"rohit","address":"Pune","company":"ABC"} 

上記の名前とアドレスは会社のBeanに属しています。私はjsonの値をそれぞれのbeanにバインドしたい。どうやってするの?私は以下のコードを試したが、うまくいかないことは分かっている。

@Requestmapping(value="/createperson",method=method.post) 
public @Responsebody String createperson(@Requestbody person,@Requestbody company) 
{ 

//Some code to save 
} 

私は、人の詳細とその人の会社の詳細を入力するフォームを持っています。

私が望むのは、このフォームが送信されると、そのフィールドの一部がPersonオブジェクトのプロパティにバインドされ、一部がCompanyオブジェクトのプロパティにバインドされるということです。これはどうすればできますか?また、json値の検証を行い、エラーがあればすべてのエラーをjson応答として戻す方法。

+0

エラーチェックのサンプルコードと説明を入力してください。 –

答えて

0

@RequestBodyは1つしか使用できません。次に、Springはcontent-typeヘッダーを調べ、適切なHttpMessageConverterを見つけます。このHttpMessageConverterは、HTTPエンティティ本体全体(入力ストリーム)を単一のオブジェクトに読み込みます。

あなたが基本的に行ってきたことは、Personと企業を1つのJSONオブジェクトにマージして、構造を平坦化しようとしていることです。あなたが春にそれを処理したい場合は、同じ(フラット)階層を持つ新しいオブジェクトを作成する必要があります。またはPersonとCompanyの両方を含むラッパークラスPersonAndCompanyを作成し、構造に一致するようにJSONを変更する必要があります。

{ 
    "person" : { 
     "name":"rohit", 
     "address":"Pune" 
    }, 
    "company" : { 
     "name":"ABC" 
    } 
} 
+0

OKありがとう、すべての検証エラーを再度送信する方法back.how controller.howで検証を実行して、応答jsonのすべてのエラーをバインドします。 –

+0

Validアノテーションとプロパティまたはクラスバリデータは、他の場所でも使用できます。ただし、期待される入力オブジェクトに解析できないJSONを送信した場合は、HttpMessageConversionExceptionが発生します。ExceptionHandlerアノテーションを使用してメソッドを作成するか、またはControllerAdviceを使用してすべてのコントローラにわたってグローバルに例外を処理できます。 –

0

あなたは人と当社との間の関係を使用している場合は、それ以外の場合は、単一のBeanの代わりに2を使用することをお勧めし、次のように行う必要があります。

@ResponseBody 
    @RequestMapping(value = "/createperson", method=RequestMethod.POST ,consumes=MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Person> createperson(@RequestBody Person person) { 

     if(error found){ 
      Person p new Person(); 
      p.setError(" error message "); 
      return new ResponseEntity<Person>(p,HttpStatus.BAD_REQUEST); 
     } 
     return new ResponseEntity<Person>(person,HttpStatus.OK); 

    } 


    public class Person { 
     private String name; 
     private String address; 
     Company company; 
     String error; 

     --- setters getters 
    } 

    public class Company { 
     String compName; 
     --- setters getters 
    } 

input json 
{"name":"person name ","address":"person address ","company":{"compName":"company name"}}