1

jerseyを使用して REST サービスを実装しました。応答の MIME タイプが「text/xml」の場合、関連するxml-stylesheetを指定する方法はありますか?

ありがとうございました。

更新: ここにコードのスニペットがあります:

@Path("/service")
@Stateless
public class MyServices
    {
    @PersistenceContext(unitName = "em")
    private EntityManager em;

    @Path("/id/{id}")
    @GET
    public MyClass getById(@PathParam("id")long id)
        {
        MyClass o=em.find(MyClass.class, id);
        return o;
        }
     }

.

@Entity(name="X")
@XmlRootElement(name="X")
@NamedQueries(...)
public class MyClass
    implements Serializable
    {
    private static final long serialVersionUID = 1L;

    ...
        }
4

2 に答える 2

2

参照:ジャージー生成の XML 応答を変更してスタイルシート情報を含める方法はありますか?

JAXB でうまく機能するXmlHeaderアノテーションがあります。

@Path("/id/{id}")
@GET
@Produces("application/xml")
@XmlHeader("<?xml-stylesheet type=\"text/css\" href=\"something.css\"?>")
public MyClass getById(@PathParam("id")long id)
于 2013-02-06T21:56:21.740 に答える
0

OPコメントで編集:

StringWriter を使用して、最初にスタイルシート情報を書き込み、次にオブジェクトをマーシャリングします。

StringWriter writer = new StringWriter();
//add processing instructions "by hand" with escaped quotation marks
//or single marks
writer.println("<?xml version='1.0'?>");
writer.println("<?xml-stylesheet type=\"text/xsl\" href=\"\">");

//create and configure marshaller to leave out processing instructions
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

//marshal to the StringWriter
marshaller.marshal(someObject,writer);
//get the string representation 
String str = writer.toString();

もちろん、ファイルや Sytstem.out など、必要な他のすべての出力ストリームに直接出力することもできます。

<?xml-stylesheet href="my-style.css"?>ドキュメントの残りの部分の前に置きますか?

于 2013-02-06T21:43:42.907 に答える