<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Apache Wink : 7.5 HTML</title>
	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">	    
    </head>

    <body>
	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
		    <tr>
			    <td valign="top" class="pagebody">
				    <div class="pageheader">
					    <span class="pagetitle">
                            Apache Wink : 7.5 HTML
                                                    </span>
				    </div>
				    <div class="pagesubheading">
					    This page last changed on Oct 14, 2009 by <font color="#0050B2">michael</font>.
				    </div>

				    <h2><a name="7.5HTML-HTML"></a>HTML</h2>

<p>Apache Wink provides a set of providers that are capable of serializing a number of data models (SyndEntry and SyndFeed) as HTML.</p>



<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>&nbsp;</th>
<th class='confluenceTh'> Supported </th>
<th class='confluenceTh'> Media Types <br clear="all" /> </th>
<th class='confluenceTh'> Data model <br clear="all" /> </th>
<th class='confluenceTh'> Provider registration <br clear="all" /> </th>
</tr>
<tr>
<td class='confluenceTd'> Read <br clear="all" /> </td>
<td class='confluenceTd'> No <br clear="all" /> </td>
<td class='confluenceTd'> N/A <br clear="all" /> </td>
<td class='confluenceTd'> N/A <br clear="all" /> </td>
<td class='confluenceTd'> N/A <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'> Write <br clear="all" /> </td>
<td class='confluenceTd'> Yes </td>
<td class='confluenceTd'> text/html <br clear="all" /> </td>
<td class='confluenceTd'> org.apache.wink <br clear="all" />
.common.model<br clear="all" />
 .synd.SyndFeed <br clear="all" />
<br clear="all" />
org.apache.wink <br clear="all" />
.common.model<br clear="all" />
 .synd.SyndEntry </td>
<td class='confluenceTd'> See below. </td>
</tr>
</tbody></table>

<h3><a name="7.5HTML-ActivatingtheHTMLprovider"></a>Activating the HTML provider</h3>

<p>The Apache Wink HTML providers are not enabled by default. In order to activate them they must be registered by the <b>HtmlSyndEntryProvider</b> and the <b>HtmlSyndFeedProvider</b> providers, located in the <b>org.apache.wink.server.internal.providers.entity.html</b> package.</p>

<p>As the HTML providers use a jsps in order to generate the representation the HtmlDefaultRepresentation folder must include all its content and subfolders available for the servlet container.</p>

<h4><a name="7.5HTML-Example"></a>Example</h4>

<p>Detailed example of the HTML implementation can be seen at the QADefect example. </p>

				    
                    			    </td>
		    </tr>
	    </table>
	    <table border="0" cellpadding="0" cellspacing="0" width="100%">
			<tr>
				<td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="images/border/spacer.gif" width="1" height="1" border="0"/></td>
			</tr>
		    <tr>
			    <td align="center"><font color="grey">Document generated by Confluence on Nov 11, 2009 06:57</font></td>
		    </tr>
	    </table>
    </body>
</html>