Minha aplicação Web usa o Freemarker para view, tenho vários .ftl que geram os HTML. Isso está tudo OK.
Mas preciso devolver para o client um XML, usando este mesmo Controller.
Criei um template .ftl que gera o XML que preciso. O Controller chama esse XML passando uma lista de registros, e o XML é gerado perfeitamente e devolvido ao client.
No entanto, o ContentType devolvido junto com o XML é text/html, o que está errado. O correto é text/xml para que o client possa tratar como XML.
Já procurei muito na web uma forma de alterar o ContentType do retorno de um .ftl mas não achei nada.
Tentei fazer assim: no Controller do Spring, no método que atende a requisição do XML, declarei o response (HttpServletResponse response) e defini o ContentType do response para text/xml, como mostra abaixo:
@RequestMapping(method=RequestMethod.GET)
public void listXml(HttpServletResponse response, ModelMap modelMap) {
response.setContentType("text/xml");
modelMap.addAttribute("sites", siteDAO.findAll());
}
Mas mesmo assim não deu certo. Com essa alteração ele envia o ContentType corretamente como text/xml mas não vem qualquer conteúdo, ou seja, parece que ele não processa o .ftl do XML.
Pergunto: Como faço para gerar o XML à partir de um .FTL?