Spring REST-Controller gibt JSON mit leeren Daten
Habe ich eine einfache Spring-Boot-web-Anwendung. Ich bin versucht zu erhalten, einige Daten vom server. Der Controller gibt eine collection zurück, aber der browser empfängt leeres JSON - die Anzahl der geschweiften Klammern ist gleich der Anzahl der Objekte aus dem server, aber Ihr Inhalt ist leer.
@RestController
public class EmployeeController {
@Autowired
private EmployeeManagerImpl employeeManagerImpl;
@RequestMapping(path="/employees", method = RequestMethod.GET)
public Iterable<Employee> getAllEmployees() {
Iterable<Employee> employeesIterable = employeeManagerImpl.getAllEmployees();
return employeesIterable;
}
}
Die Methode feuert und browser zeigt:
Nichts mehr in der Konsole. Irgendwelche Ideen?
BEARBEITEN:
Employee.java
@Entity
public class Employee implements Serializable{
private static final long serialVersionUID = -1723798766434132067L;
@Id
@Getter @Setter
@GeneratedValue
private Long id;
@Getter @Setter
@Column(name = "first_name")
private String firstName;
@Getter @Setter
@Column(name = "last_name")
private String lastName;
@Getter @Setter
private BigDecimal salary;
public Employee(){
}
}
- bitte geben Sie
employeesIterable
hier - Wir müssen zumindest sehen, der code für die POJO. Es könnte sein, dass Sie nicht über jede serialisierbare Felder.
- Verwenden ResponseBody mit der return-Typ als public @ResponseBody Iterierbar<Mitarbeiter - > getAllEmployees() {
@RestController
annotation bereits übernimmt.- Wie in der Regel, es begann, nachdem ich Sie gebeten, es. Ich entfernte lombok-Annotationen Hinzugefügt und gemeinsame Getter und setter. Jetzt bin ich bekommen, was ich wollte. Aber warum funktioniert es nicht mit lombok?
- Gut, es könnte sein, zahlreiche Möglichkeiten - am wahrscheinlichsten ist, dass Lombok ist nicht richtig konfiguriert. Können Sie rufen Sie die Getter/setter in Ihrem code? Nach dem erstellen der app sind die Getter/setter enthalten in der
Employee.class
- Datei? - Ja, IDE (sts) sehen können Methoden, kann ich Sie anrufen
- Hinzufügen getter-setter im Modell / pojo. Es wird funktionieren !
- Noch immer dieses Problem heute. Nichts, die hier vorgeschlagen wird gearbeitet. Ideen willkommen
- im Grunde müssen Sie öffentliche Getter und Setter, die in Ihrer Entity-Klasse. Das ist das Problem sehe ich hier
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie sollten Lombok-Klasse-Niveau statt von der Feldebene.
Dies kann Ihr problem lösen.
@Getter
und@Setter
ersetzt werden kann, mit Anmerkungen@Data
Haben Sie einen Konverter in das Projekt, das konvertiert den JAVA-Objekte nach JSON. Wenn nicht, müssen Sie auf. Versuchen Sie es mit Jackson in Ihrem Projekt.
Einmal Jackson Gläser werden in das Projekt importiert, die dispatcher-servlet sollte unten:
Versuchen Sie, @ResponseBody, um Ihre REST-Methode zurückkehren, die Typ-Deklaration in der Signatur der Methode. Das sollte es tun, wenn Sie mit der standard-Spring-Boot-starter-Projekt.
@RestController
fügt automatisch@ResponseBody
Anmerkung für alle gibt.