Moved REST views to View chapter.
This commit is contained in:
parent
7b1ff5859e
commit
b57085909c
|
|
@ -38,120 +38,6 @@
|
||||||
configuration</link> to understand the general programming model.</para>
|
configuration</link> to understand the general programming model.</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section id="rest-views">
|
|
||||||
<title>Views</title>
|
|
||||||
|
|
||||||
<para>Several views were added in Spring 3 to help support creating
|
|
||||||
RESTful services. They are:</para>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><classname>AbstractAtomFeedView</classname> - returns an Atom
|
|
||||||
feed</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><classname>AbstractRssFeedView</classname> - returns a RSS
|
|
||||||
feed</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><classname>MarshallingView</classname> - returns an XML
|
|
||||||
representation using Spring's Object to XML mapping (OXM)
|
|
||||||
functionality</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
|
|
||||||
<note>
|
|
||||||
<para>Available separately is the
|
|
||||||
<classname>JacksonJsonView</classname> included as part of the Spring
|
|
||||||
JavaScript project.</para>
|
|
||||||
</note>
|
|
||||||
|
|
||||||
<section id="rest-feedview">
|
|
||||||
<title>Feed Views</title>
|
|
||||||
|
|
||||||
<para>Both <classname>AbstractAtomFeedView</classname> and
|
|
||||||
<classname>AbstractRssFeedView</classname> inherit from the base class
|
|
||||||
<classname>AbstractFeedView</classname> and are used to provide Atom
|
|
||||||
and RSS Feed views respectfully. They are based on java.net's <ulink
|
|
||||||
url="https://rome.dev.java.net">ROME</ulink> project and are located
|
|
||||||
in the package
|
|
||||||
<literal>org.springframework.web.servlet.view.feed</literal>.</para>
|
|
||||||
|
|
||||||
<para><classname>AbstractAtomFeedView</classname> requires you to
|
|
||||||
implement the <methodname>buildFeedEntries</methodname> method and
|
|
||||||
optionally override the <methodname>buildFeedMetadata</methodname>
|
|
||||||
method (the default implementation is empty), as shown below</para>
|
|
||||||
|
|
||||||
<programlisting language="java">public class SampleContentAtomView extends AbstractAtomFeedView {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void buildFeedMetadata(Map<String, Object> model, Feed feed,
|
|
||||||
HttpServletRequest request) {
|
|
||||||
// implementation omitted
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected List<Entry> buildFeedEntries(Map<String, Object> model,
|
|
||||||
HttpServletRequest request,
|
|
||||||
HttpServletResponse response) throws Exception {
|
|
||||||
|
|
||||||
// implementation omitted
|
|
||||||
}
|
|
||||||
}</programlisting>
|
|
||||||
|
|
||||||
<para>Similar requirements apply for implementing
|
|
||||||
<classname>AbstractRssFeedView</classname>, as shown below</para>
|
|
||||||
|
|
||||||
<programlisting language="java">public class SampleContentAtomView extends AbstractRssFeedView {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void buildFeedMetadata(Map<String, Object> model, Channel feed,
|
|
||||||
HttpServletRequest request) {
|
|
||||||
// implementation omitted
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected List<Item> buildFeedItems(Map<String, Object> model,
|
|
||||||
HttpServletRequest request,
|
|
||||||
HttpServletResponse response) throws Exception {
|
|
||||||
// implementation omitted
|
|
||||||
}
|
|
||||||
|
|
||||||
}</programlisting>
|
|
||||||
|
|
||||||
<para>The <methodname>buildFeedItems</methodname> and
|
|
||||||
<methodname>buildFeedEntires</methodname> pass in the HTTP request in
|
|
||||||
case you need to access the Locale. The HTTP response is passed in
|
|
||||||
only for the setting of cookies or other HTTP headers. The feed will
|
|
||||||
automatically be written to the response object after the method
|
|
||||||
returns.</para>
|
|
||||||
|
|
||||||
<para>For an example of creating a Atom view please refer to Alef
|
|
||||||
Arendsen's SpringSource TeamBlog <ulink
|
|
||||||
url="http://blog.springsource.com/2009/03/16/adding-an-atom-view-to-an-application-using-springs-rest-support/">entry</ulink>.</para>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<title>XML Marshalling View</title>
|
|
||||||
|
|
||||||
<para>The <classname>MarhsallingView</classname> uses a XML
|
|
||||||
<interfacename>Marshaller</interfacename> defined in the
|
|
||||||
<classname>org.springframework.oxm</classname> package to render the
|
|
||||||
response content as XML. The object to be marshalled can be set
|
|
||||||
explicitly using <classname>MarhsallingView</classname>'s
|
|
||||||
<property>modelKey</property> bean property. Alternatively, the view
|
|
||||||
will iterate over all model properties marhsall only those types that
|
|
||||||
are supported by the <interfacename>Marshaller</interfacename>. For
|
|
||||||
more information on the functionality in the
|
|
||||||
<classname>org.springframework.oxm</classname> package refer to the
|
|
||||||
chapter <link linkend="oxm">Marshalling XML using O/X
|
|
||||||
Mappers</link>.</para>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id="rest-method-conversion">
|
<section id="rest-method-conversion">
|
||||||
<title>HTTP Method Conversion</title>
|
<title>HTTP Method Conversion</title>
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue