4
respostas

Retornar o Produto com Xml

Alguém, sabe como criar o resolver para Xml, tentei criar usando as documentações mas não consegui.

4 respostas

Oi Marcos,

Adiciona o jackson-xml(https://github.com/FasterXML/jackson-dataformat-xml) no pom.xml e informa no método do seu controller que vc quer retornar application/xml.

Ola Alberto,

poderia ser um pouco mais especifico, creio que meu conhecimento seja um pouco limitado, não consegui abstrair no que se refere a retornar application/xml, e não preciso fazer nenhuma configuração no AppWebConfiguration.class ?

desde já agradeço a ajuda...

Olá Marco,

O que o Alberto quis dizer foi que no seu pom.xml você deve adicionar as dependências do jackson-xml:

<dependency>
  <groupId>com.fasterxml.jackson.dataformat</groupId>
  <artifactId>jackson-dataformat-xml</artifactId>
  <version>2.6.3</version>
</dependency>
<dependency>
  <groupId>org.codehaus.woodstox</groupId>
  <artifactId>woodstox-core-asl</artifactId>
  <version>4.4.1</version>
</dependency>

E no controller:

@RequestMapping(value = "url", produces = {"application/xml" })

Vê se isso já resolve. Não testei.

Alberto, acho que ele vai ter que mudar o context negotiation não?

Abraço

Olá Marco, Conforme orientado nas aulas, para fazer com que apresente os dados no formato XML é preciso:

1) Criar classe XmlResolver implementando a interface ViewResolver, semelhante a classe criada para o JSON:

public class XmlViewResolver implements ViewResolver {

    @Override
    public View resolveViewName(String viewName, Locale locale) throws Exception {
        MappingJackson2XmlView xmlView= new MappingJackson2XmlView();
        xmlView.setPrettyPrint(true);
        return xmlView;
    }
}

2) Adicionar esta classe à lista de Resolvers no método contentNegotiationViewResolver da classe AppWebConfiguration:

//metodo para retornar views distintas, em HTML e JSON utilizando padrao Content Negociation
    @Bean
    public ViewResolver contentNegotiationViewResolver(ContentNegotiationManager manager){
        ...
        viewResolvers.add(new XmlViewResolver()); //adiciona XML
        ...
    }

3) No meu caso foi necessário adicionar esta biblioteca no pom.xml:

<dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>2.8.4</version>
</dependency>

Desta forma funcionou corretamente, por exemplo, acessando a url :

http://localhost:8080/casadocodigo/produtos/detalhe/2.xml

Espero ter ajudado!