2015-06-09 7 views
7

Właśnie opracowuję małą aplikację do szkolenia i mam problem z wykorzystaniem Spring Hateoas przy użyciu PathVariable.Wiosenne Hateopy, PathVariable i SaxSerialization

W rzeczywistości, kiedy używać coś takiego:

@RequestMapping(value = "/directories/{idDirectory}", method = RequestMethod.GET) 
    public DirectoryDTO findById(@PathVariable String idDirectory) { 
     DirectoryEntity directoryEntity = directoryService.findById(idDirectory); 
     DirectoryDTO directoryDto = new DirectoryDTO(directoryEntity); 
     directoryDto.add(linkTo(methodOn(DirectoryController.class).findById(idDirectory)).withSelfRel()); 
     return directoryDto; 
    } 

mam błąd jak na następujący:

[com.sun.istack.internal.SAXException2]: nie marszałek typu DirectoryDTO do elementu, ponieważ brakuje adnotacji

Oto mój DirectoryEntity:

@Document(collection = "directory") 
public class DirectoryEntity { 

    @Id 
    private String id; 
    private String name; 
    private String path; 
    private List<DirectoryEntity> childrenDirectories; 
    private DirectoryEntity parentDirectory; 
    private List<FileEntity> fileEntities; 

/* Get/set omitted */ 
} 

A DTO:

public class DirectoryDTO extends Resource<DirectoryEntity> { 


    public DirectoryDTO(DirectoryEntity content, Link... links) { 
     super(content, links); 
    } 

    public DirectoryDTO(DirectoryEntity content, Iterable<Link> links) { 
     super(content, links); 
    } 
} 

Co robię źle?

+0

Czy to "RestController"? W przeciwnym razie prawdopodobnie będziesz musiał dodać '@ ResponseBody' do deklaracji metody. – woemler

+0

to RestController, przepraszam, nie powiedziałem tego. – mfrachet

+0

Spróbuj dodać adnotację @XmlRootElement do swojej klasy DirectoryDTO. –

Odpowiedz

0

Musisz dodać adnotację @XmlRootElement(name = "directoryEntity") w DirectoryDTO.

+0

Próbowałem tego i dostałem: "Ta strona zawiera następujące błędy: błąd w wierszu 2 w kolumnie 93: Podmiot "eacute" nie zdefiniowany Poniżej przedstawiono renderowanie strony do pierwszego błędu. " – mfrachet

+0

Twój oryginalny probolem się zmienił. Być może masz błąd w swoim interfejsie, Oczekuje, że "eacute" podmiot – aabadia

+0

Nie mam front end, używam RestController bez renderowania strony. Tylko bezpośrednie wyjście z kontrolera – mfrachet

Powiązane problemy