Gibt es eine Möglichkeit, Json-Payload zu Model Bean zuordnen. Wenn möglich, bitte geben Sie mir ein Beispiel.Wie JSON-Payload modellieren Bean in Struts2
Im Folgenden sind die Klassen, die ich verwende.
package com.sample;
import java.io.Serializable;
public class Employee implements Serializable{
private String firstName;
private String lastName;
private int id;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Employee [firstName=").append(firstName)
.append(", lastName=").append(lastName).append(", id=")
.append(id).append("]");
return builder.toString();
}
}
Folgendes ist meine Aktionsklasse.
package com.sample.controller;
import com.opensymphony.xwork2.ModelDriven;
import com.sample.Employee;
public class EmployeeController implements ModelDriven<Employee> {
private String name = "Hari krishna";
Employee emp = new Employee();
public String addEmployee() {
System.out.println(emp);
return "success";
}
@Override
public Employee getModel() {
return emp;
}
}
Es folgt mein struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="json-default">
<interceptors>
<interceptor-stack name="jsonStack">
<interceptor-ref name="json">
<param name="enableSMD">true</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<action name="addEmployee" class = "com.sample.controller.EmployeeController" method = "addEmployee">
<interceptor-ref name="jsonStack"></interceptor-ref>
<result type="json" />
</action>
</package>
</struts>
Als ich die Aktion "addEmployee", mit JSON-Daten "{" vorName nennen ":" Hari " "id": 123," nachName ":" assds "}" Ich bekomme folgende Antwort. Ich setze den Inhaltstyp auf text/json.
{
"model": {
"firstName": null
"id": 0
"lastName": null
}-
}
Ich poste Daten mit Advanced Rest Client.
Ich habe versucht, Jersey zu integrieren, aber hat nicht funktioniert. Ich habe nicht viele Beispiele gefunden, die sich auf struts2-json plugin beziehen, die mit der Post-Anfrage in Verbindung stehen. –
Ich folgte der Antwort in "http://stackoverflow.com/questions/19824833/how-to-post-an-array-of-object-in-json-to-struts2-action" –
Model Klasse Mitarbeiter initialisiert mit Nullwerte wie "Employee [firstName = null, lastName = null, id = 0]". aber ich gebe json {"firstName": "Hari", "id": 123, "lastName": "assds"} an meine Aktions-URL weiter. –