<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- $Id$ --> 
<html>
<head>
<title>ServiceLink</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="Select.html"><IMG alt=Select 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="Shell.html"><IMG alt=Shell 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>ServiceLink</b></font></td>
	 </tr>
	 <tr>
	  <td>
		 <A href="../api/org/apache/tapestry/link/ServiceLink.html">org.apache.tapestry.link.ServiceLink</A>
		</td>
	 </tr>
  </table>
 </td>
 <td>
  <table align="right" valign="middle" bgcolor="#c0c0c0" cellpadding="8">
	 <tr>
	  <td>Non Visual Component</td>
	 </tr>
  </table>
 </td>
</tr>

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

<tr>
 <td colspan="2">
            <P>
  <b>Description</b>
	<br>
  A component for creating a link for an arbitrary engine service that uses no 
  parameters, such as the reset or home service. A ServiceLink component can emulate 
  an <A href="ActionLink.html">ActionLink</A>, <a href="PageLink.html">PageLink</a> or 
  <A href="DirectLink.html">DirectLink</A> 
            component, but is most often used in conjunction with an 
            application-specific service. </P>
            <P>Prior to release 2.2, this component was named 
            <STRONG>Service</STRONG>.</P>             
 </td>
</tr>

<tr>
 <td colspan="2">
  <b>See Also</b>
	<br>
	<A href="ActionLink.html">ActionLink</A>, 
	<A href="DirectLink.html">DirectLink</A>, 
	<A href="ExternalLink.html">ExternalLink</a>, 
	<A href="GenericLink.html">GenericLink</A>, 
  <a href="PageLink.html">PageLink</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>service</td>
    <td>String</td>
    <td>in</td>
   	<td>yes</td>
		<td>&nbsp;</td>
		<td>The name of the 
    <a href="../api/org/apache/tapestry/engine/IEngineService.html"><tt>EngineService</tt></a> 
    to invoke.</td>
	</tr>
  <tr>
    <td>parameters</td>
    <td><tt>Object</tt>,<br>
    	<tt>Object[]</tt> or<nr>
    	<tt>List</tt></td>
    <td>in</td>
   	<td>no</td>
		<td>&nbsp;</td>
		<td>
    An array of Objects to be encoded into the URL. These parameters will be 
    decoded when the link is triggered.
    </td>
	</tr>
  <tr>
    <td>disabled</td>
    <td>boolean</td>
    <td>in</td>
   	<td>no</td>
		<td>false</td>
		<td>
    Controls whether the link is produced. If disabled, the portion of the 
    template the link surrounds is still rendered, but not the link itself.
    <p>Using the namespace scheme, to create 
                  a link to a page in a library, you must provide the libraries 
                  namespace prefix.</p> 
                   
          
    </td>
	</tr>
  <tr>
    <td>context</td>
    <td><tt>Object[]</tt></td>
    <td>in</td>
   	<td>no</td>
		<td>&nbsp;</td>
		<td>
    Deprecated name for <b>parameters</b>. This will emit warnings in 2.2 and be 
    removed in a later release entirely. 
    </td>
	</tr>

  <tr>
    <td>anchor</td>
    <td>String</td>
    <td>in</td>
   	<td>no</td>
		<td>&nbsp;</td>
		<td>
    The name of an anchor or element to link to. The final URL will have '#' 
    and the anchor appended to it.
    </td>
	</tr>
	
	<tr>
		<td>renderer</td>
		<td><a href="../api/org/apache/tapestry/link/ILinkRenderer.html">ILinkRenderer</a></td>
		<td>in</td>
		<td>no</td>
		<td>&nbsp;</td>
		<td>
		The object which will actually render the link.
			</td>
	</tr>	
	</table><BR>Body: 
            <STRONG>rendered</STRONG><BR>Informal parameters: 
            <STRONG>allowed</STRONG>
    <br>
  Reserved parameters: "href"
 </td>
</tr>

<tr>
 <td colspan="2">
  <b>Examples</b>
	<p>
  This example is under construction.</p>
      

 </td></tr></table>
</td></tr>
<tr>
 <td colspan="3"><hr></td>  
</tr>
<tr>
 <td align="left"><A href="Select.html"><IMG alt=Select 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="Shell.html"><IMG alt=Shell src="common-images/next.png"></A></td>  
</tr>
</table>

</body>
</html>