<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- $Id$ --> 
<html>
<head>
<title>Body</title>
<link rel="stylesheet" type="text/css" href="Tapestry.css" title="style">
</head>

<body>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
 <tr>
  <td align="left"><A href="Block.html"><IMG alt=Block src="common-images/prev.png"></A></td>  
  <td align="middle"><A href="index.html"><IMG alt="Component Index" src="common-images/home.png" ></A></td>  
  <td align="right"><A href="Button.html"><IMG alt="Button" src="common-images/next.png"></A></td>  
 <tr>
 <tr>
  <td colspan="3"><hr></td>  
 </tr>
 <tr>
  <td colspan="3">
   <table border="0" cellpadding="4" cellspacing="4" width="100%">

<tr valign="top">
 <td>
  <table>
	 <tr>
	  <td><font size="+2"><b>Body</b></font></td>
	 </tr>
	 <tr>
	  <td>
		 <A href="../api/org/apache/tapestry/html/Body.html">org.apache.tapestry.html.Body</A>
		</td>
	 </tr>
  </table>
 </td>
 <td>
  <table align="right" valign="middle" bgcolor="#c0c0c0" cellpadding="8">
	 <tr>
	  <td>Visual / Non Visual Component</td>
	 </tr>
  </table>
 </td>
</tr>

<tr valign="center">
 <td colspan="2">&nbsp;</td>
</tr>

<tr>
 <td colspan="2">
  <b>Description</b>
	<br>
  Provides the HTML &lt;body&gt; tag. The Body component is used dynamically
  JavaScript for other components such as the <A href="Script.html">Script</A> 
  and <A href="Rollover.html">Rollover</A>
           component. 
 </td>
</tr>

<tr>
 <td colspan="2">
  <b>See Also</b>
	<br>
	<A href="Rollover.html">Rollover</A>, 
  <A href="Script.html">Script</A>, 
  <A href="Shell.html">Shell</A> 
 </td>
</tr>

<tr>
 <td colspan="2">
  <b>Parameters</b>
	<br>
  <table border="1" cellpadding="4" cellspacing="4" class="parameters">
  <tr> 
    <th>Name</th>
    <th>Type</th>
	  <th>Direction</th>
    <th>Required</th> 
    <th>Default</th>
    <th>Description</th>
  </tr>
  <tr>
    <td>element</td>
    <td>String</td>
    <td>in</td>
   	<td>no</td>
		<td>body</td>
		<td>The element to use when rendering a tag. When using a Body component 
    in a frameset, this may be changed to "frameset". 
		</td>
	</tr>
	</table>
            <P>Body: <STRONG>rendered<BR></STRONG>Informal 
            parameters: <STRONG>allowed</STRONG>
    <br>
  Reserved parameters: "onload" </P>
    
 </td>
</tr>

<tr>
 <td colspan="2">
  <b>Examples</b>
	<p>
  The Body component is used here to dynamically set the page's background 
  color using the informal parameter 'bgcolor'.	
	<p>
  Please also see the <A href="Shell.html">Shell</A> example which illustrates 
  how to integrate style sheets into your applications.
	<p>

<table bgcolor="yellow" cellpadding="24">
<tr>
 <td>Your account of $645.35 is 2 Months overdue.<td></td>
</tr>
</table>
		
            <pre>			
&lt;body jwcid="@<span class="jwcid"><A href="Body.html">Body</A></span>" bgcolor="ognl:statusColor"&gt;
  Your account &lt;span jwcid="@<a href="Insert.html">Insert</a>" value="ognl:accountStatus"/&gt;.
&lt;/body&gt;


&lt;property-specification name=&quot;accountStatus&quot; type=&quot;java.lang.String&quot; persistent=&quot;yes&quot;/&gt;<br>&lt;property-specification name=&quot;statusColor&quot; type=&quot;java.lang.String&quot; persistent=&quot;yes&quot;/&gt;<br>

public abstract class AccountPage extends BasePage {
    public void setAccountStatus(String accountStatus);

    public void setStatusColor(String statusColor);
}
</pre>
          </td>
        </tr></table>
</td></tr>
<tr>
 <td colspan="3"><hr></td>  
</tr>
<tr>
 <td align="left"><A href="Block.html"><IMG alt=Block src="common-images/prev.png"></A></td>  
 <td align="middle"><A href="index.html"><IMG alt="Component Index" src="common-images/home.png" ></A></td>  
 <td align="right"><A href="Button.html"><IMG alt="Button" src="common-images/next.png"></A></td>  
</tr>
</table>

</body>
</html>