2017-03-15 1 views
0

Ich versuche, Liste der Pojos (State Class) durch Restful Web-Services.Restful Web-Service - Hinzufügen von Liste von Pojos

@POST 
@Path("/saveDetails2") 
@Consumes(MediaType.APPLICATION_JSON) 
public String saveFormerWithLandDetails(@FormParam("name") String name, @FormParam("mobileNo") Long mobileNo, 
     @FormParam("address1") String address1,@FormParam("address2") String address2,@FormParam("states")List<State> states) { 
    // Business logic 
    return "SUCCESS"; 

} 

In Postbote, Daten unter json als Rohdaten hinzugefügt:

{ 
    "name":"ABCDSSS", 
    "mobile":123456789, 
    "addressLine1":"ADDRESS3456", 
    "addressLine2":"ADDRESS3456", 
    "states":[ 
     { 
      "code":"ABC", 
      "name":"TEST" 
     } 
    ] 
} 

In-Header, Content-Type - application/json

Zustandstabelle ist:

@XmlRootElement(name = "State") 
    @XmlAccessorType(XmlAccessType.NONE) 
    public class State implements Serializable { 

    @Id 
    @XmlElement(name = "id") 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private long id; 

    @XmlElement(name="code") 
    @ Column(name = "state_code") 
    private String code; 

    @XmlElement(name="name") 
    @Column(name="state_name") 
    private String name; 

    // setters and getters 
} 

Fehler ist:

HTTP-Status 500 - java.lang.IllegalStateException: Die @FormParam verwendet, wenn der Inhaltstyp der Anforderungsentität nicht Anwendung/x-www-form-urlencoded

was ist dann Param Anmerkung (@QueryParam und @ PathParam übergeben beide keine Daten) kann ich in meinem Fall verwenden?

Was ist der beste Weg, Pojo's in Restful Web Services zu verwenden und über POSTMAN zu testen.

Ich fand das ähnlich in SOF aber passender Liste der Schnur, ich folgte derselben Annäherung, aber arbeitete nicht.

Antwort

0

Sie die Ursache für Ihr Problem in Ihrer sehr Frage aufgenommen haben.

In-Header, Content-Type - application/json

@FormParam ist ein Parameter in einem x-www-URL-codierte Körper mit dem registrierten Inhaltstyp application/x-www- form-urlencodiert.

Die Verwendung von application/json schließt die Verwendung von @FormParam aus. Sie haben einige Optionen: Sie können den entsprechenden Medientyp verwenden, um die Anmerkung zu nutzen. Sie können Ihren eigenen Binder mit AoP schreiben, um den Wert zu analysieren und zu übergeben; Sie können eine beliebige Anzahl von JSON-Parsing-Frameworks nutzen, um sie selbst zu analysieren. oder Sie können JsonPath verwenden.

Verwandte Themen