Pertanyaan Indentasi Jersey XML


Saya memiliki kode berikut:

@Path("/search")
public class SearchRestlet
        extends BaseRestlet
{

    @GET
    @Produces({ MediaType.APPLICATION_XML,
                MediaType.APPLICATION_JSON,
                MediaType.TEXT_PLAIN })
    public SearchResult search(...)
            throws IOException, ParseException
    {
        final SearchRequest searchRequest = new SearchRequest(...);
        final SearchResult result = searchService.search(searchRequest);

        return result;
    }

}

Inilah saya JAXB objek yang dipetakan:

@XmlRootElement(name = "result")
@XmlAccessorType(XmlAccessType.FIELD)
public class SearchResult
{

    @XmlElement
    private String id;

    ...

}

Ini adalah output yang saya dapatkan:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><result><id>foo</id></result>

Ini adalah output yang ingin saya dapatkan:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<result>
    <id>foo</id>
</result>

Jika saya menggunakan marshaller secara langsung, saya tahu saya dapat mengatur properti untuk ini dan itu seharusnya bekerja. Bagaimana ini bisa dilakukan dari dalam konteks Jersey berdasarkan contoh di atas?


4
2017-11-06 19:09


asal


Jawaban:


Tambahkan yang berikut ini ke Anda web.xml deskripsi penggunaan:

<init-param>
    <param-name>jersey.config.xml.formatOutput</param-name>
    <param-value>true</param-value>
</init-param>

Untuk lebih jelasnya, periksa MessageProperties.XML_FORMAT_OUTPUT.


6
2017-11-06 19:50