blob: f1967b8df6e0dc021ba8da18c0da8f4c4884842d [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- saved from url=(0014)about:internet -->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_19) on Sun Mar 20 20:56:38 PKT 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
SpringClickServlet (Click Extras API - v2.3.0)
</TITLE>
<META NAME="keywords" CONTENT="org.apache.click.extras.spring.SpringClickServlet class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="SpringClickServlet (Click Extras API - v2.3.0)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/click/extras/spring/PageScopeResolver.html" title="class in org.apache.click.extras.spring"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/apache/click/extras/spring/SpringClickServlet.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="SpringClickServlet.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.click.extras.spring</FONT>
<BR>
Class SpringClickServlet</H2>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html" title="class or interface in javax.servlet">javax.servlet.GenericServlet</A>
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html" title="class or interface in javax.servlet.http">javax.servlet.http.HttpServlet</A>
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html" title="class or interface in org.apache.click">org.apache.click.ClickServlet</A>
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.click.extras.spring.SpringClickServlet</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/Servlet.html" title="class or interface in javax.servlet">Servlet</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletConfig.html" title="class or interface in javax.servlet">ServletConfig</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>SpringClickServlet</B><DT>extends <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html" title="class or interface in org.apache.click">ClickServlet</A></DL>
</PRE>
<P>
Provides a Spring framework integration <tt>SpringClickServlet</tt>.
<p/>
This Spring integration servlet provides a number of integration options
using Spring with Click pages. These options are detailed below.
<p/>
<b>Stateful pages caveat:</b> please note that stateful pages do not work
with all options.
<h3><a name="option1"></a>1. Spring instantiated Pages with &#64;Component
configuration</h3>
With this option Page classes are configured with Spring using the
&#64;Component annotation. When the SpringClickServlet receives a page
request it converts the auto-mapped page class to the equivalent Spring
bean name and gets a new instance from the Spring ApplicationContext.
<pre class="codeConfig">
customer-list.htm -> com.mycorp.page.CustomerListPage -> customerListPage
HTML Request Click Page Class Spring Bean Name </pre>
When using this strategy use the PageScopeResolver class to ensure new Page
instances are created with each request, rather than Spring's default
"singleton" creation policy. Please see the <A HREF="../../../../../org/apache/click/extras/spring/PageScopeResolver.html" title="class in org.apache.click.extras.spring"><CODE>PageScopeResolver</CODE></A> Javadoc
for more information on configuring this option.
<p/>
An example Page class is provided below which uses the Spring &#64;Component annotation.
Note in this example page the customerService with the &#64;Resource
annotation is injected by Spring after the page instance has been instantiated.
<pre class="prettyprint">
package com.mycorp.page;
import javax.annotation.Resource;
import org.apache.click.Page;
import org.springframework.stereotype.Component;
import com.mycorp.service.CustomerService;
&#64;Component
public class CustomerListPage extends Page {
&#64;Resource(name="customerService")
private CustomerService customerService;
..
} </pre>
This is the most powerful and convenient Spring integration option, but does
require Spring 2.5.x or later.
<p/>
<b><a name="stateful-page-caveat"></a>Stateful page caveat:</b> Spring beans
injected on stateful pages will be serialized along with the page, meaning
those beans must implement the Serializable interface. If you do
not want the beans to be serialized, they need to be marked as
<tt>transient</tt>. Transient beans won't be serialized but when the page
is deserialized, the transient beans won't be re-injected, causing a
NullPointerException when invoked. If you want to use transient beans on
stateful pages, see <a href="#option3">option 3</a> below.
<h3><a name="option2"></a>2. Spring instantiated Pages with Spring XML
configuration</h3>
With this option Page classes are configured using Spring XML configuration.
When the SpringClickServlet receives a page request it converts the auto-mapped
page class to the equivalent Spring bean name and gets a new instance from the
Spring ApplicationContext.
<pre class="codeConfig">
customer-list.htm -> com.mycorp.page.CustomerListPage -> customerListPage
HTML Request Click Page Class Spring Bean Name </pre>
If the page bean is not found in the ApplicationContxt then the full Page
class name is used.
<pre class="codeConfig">
customer-list.htm -> com.mycorp.page.CustomerListPage -> com.mycorp.page.CustomerListPage
HTML Request Click Page Class Spring Bean Name </pre>
This integration option requires you to configure all your Spring Page beans
in your Spring XML configuration. While this may be quite laborious, it does
support Spring 1.x or later. An example page bean configuration is
provided below:
<pre class="prettyprint">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans&gt;
&lt;bean id="customerListPage" class="com.mycorp.page.CustomerListPage" scope="prototype"/&gt;
&lt;/beans&gt; </pre>
<b>Please Note</b> ensure the page beans scope is set to "prototype" so a new
page instance will be created with every HTTP request. Otherwise Spring will
default to using singletons and your code will not be thread safe.
<p/>
<b>Stateful page caveat:</b> option 2 has the same caveat as
<a href="#stateful-page-caveat">option 1</a>.
<h3><a name="option3"></a>3. Click instantiated Pages with injected Spring
beans and/or ApplicationContext</h3>
With this integration option Click will instantiate page instances and
automatically inject any page properties which match Spring beans defined in
the ApplicationContext. In order to enable bean injection, you need to
configure the SpringClickServlet init parameter:
<a href="#inject-page-beans">inject-page-beans</a>.
<p/>
While this option is not as powerful as &#64;Component configured pages it is
much more convenient than Spring XML configured pages and supports Spring 1.x.
You can also use annotation based injection which requires Spring 2.5.x
or later.
<p/>
An example Page class is provided below which has the customerService property
automatically injected by the SpringClickServlet. Note the customerService
property will need to be defined in a Spring XML configuration.
<pre class="prettyprint">
package com.mycorp.page;
import org.apache.click.Page;
import com.mycorp.service.CustomerService;
public class CustomerListPage extends Page {
private CustomerService customerService;
public void setCustomerService(CustomerService customerService) {
this.customerService = customerService;
}
..
} </pre>
Page property bean name must match the bean name defined in the Spring XML
configuration. Continuing our example the Spring XML configuration is provided
below:
<pre class="prettyprint">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans&gt;
&lt;bean id="customerService" class="com.mycorp.service.CustomerService"/&gt;
&lt;/beans&gt; </pre>
This option will also automatically inject the ApplicationContext into
page instances which implement the <A HREF="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/context/ApplicationContextAware.html" title="class or interface in org.springframework.context"><CODE>ApplicationContextAware</CODE></A>
interface. Using the applicationContext you can lookup Spring beans manually
in your pages. For example:
<pre class="prettyprint">
public class CustomerListPage extends Page implements ApplicationContextAware {
protected ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
public CustomerService getCustomerService() {
return (CustomerService) applicationContext.getBean("customerService");
}
} </pre>
This last strategy is probably the least convenient integration option.
<h4><a name="option31"></a>3.1 Spring beans and Stateful pages</h4>
Stateful pages are stored in the HttpSession and Spring beans referenced
by a stateful page must implement the Serializable interface. If you do not
want beans to be serialized they can be marked as <tt>transient</tt>.
Transient beans won't be serialized to disk. However once the page is
deserialized the transient beans will need to be injected again.
<p/>
<a href="#option3">Option 3</a> will re-inject Spring beans and the
ApplicationContext after every request. This allows beans to be marked as
<tt>transient</tt> and still function properly when used with stateful pages.
<pre class="prettyprint">
package com.mycorp.page;
import org.apache.click.Page;
import com.mycorp.service.CustomerService;
public class CustomerListPage extends Page implements ApplicationContextAware {
// Note the transient keyword
private transient CustomerService customerService;
protected transient ApplicationContext applicationContext;
public CustomerListPage {
// Page is marked as stateful
setStateful(true);
}
// Inject the customer service
public void setCustomerService(CustomerService customerService) {
this.customerService = customerService;
}
public CustomerService getCustomerService() {
return (CustomerService) applicationContext.getBean("customerService");
}
// Inject Spring's ApplicationContext
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
..
} </pre>
<h3>Servlet Configuration</h3>
The SpringClickServlet can obtain the ApplicationContext either from
<A HREF="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/web/context/support/WebApplicationContextUtils.html" title="class or interface in org.springframework.web.context.support"><CODE>WebApplicationContextUtils</CODE></A> which is configured with a
<A HREF="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/web/context/ContextLoaderListener.html" title="class or interface in org.springframework.web.context"><CODE>ContextLoaderListener</CODE></A>. For example:
<pre class="codeConfig">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;web-app&gt;
&lt;listener&gt;
&lt;listener-class&gt;
<span class="blue">org.springframework.web.context.ContextLoaderListener</span>
&lt;/listener-class&gt;
&lt;/listener&gt;
&lt;servlet&gt;
&lt;servlet-name&gt;SpringClickServlet&lt;/servlet-name&gt;
&lt;servlet-class&gt;org.apache.click.extras.spring.SpringClickServlet&lt;/servlet-class&gt;
&lt;load-on-startup&gt;0&lt;/load-on-startup&gt;
&lt;/servlet&gt;
..
&lt;/web-app&gt; </pre>
Alternatively you can specify the path to the ApplicationContext as a
servlet init parameter. For example:
<pre class="codeConfig">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;web-app&gt;
&lt;servlet&gt;
&lt;servlet-name&gt;SpringClickServlet&lt;/servlet-name&gt;
&lt;servlet-class&gt;org.apache.click.extras.spring.SpringClickServlet&lt;/servlet-class&gt;
&lt;init-param&gt;
&lt;param-name&gt;<span class="blue">spring-path</span>&lt;/param-name&gt;
&lt;param-value&gt;<span class="red">/applicationContext.xml</span>&lt;/param-value&gt;
&lt;/init-param&gt;
&lt;load-on-startup&gt;0&lt;/load-on-startup&gt;
&lt;/servlet&gt;
..
&lt;/web-app&gt; </pre>
<a name="inject-page-beans"></a>To configure page Spring bean injection
(<a href="#option3">option 3</a> above), you need to configure the
<span class="blue">inject-page-beans</span> servlet init parameter. For example:
<pre class="codeConfig">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;web-app&gt;
..
&lt;servlet&gt;
&lt;servlet-name&gt;SpringClickServlet&lt;/servlet-name&gt;
&lt;servlet-class&gt;org.apache.click.extras.spring.SpringClickServlet&lt;/servlet-class&gt;
&lt;init-param&gt;
&lt;param-name&gt;<span class="blue">inject-page-beans</span>&lt;/param-name&gt;
&lt;param-value&gt;<span class="red">true</span>&lt;/param-value&gt;
&lt;/init-param&gt;
&lt;load-on-startup&gt;0&lt;/load-on-startup&gt;
&lt;/servlet&gt;
..
&lt;/web-app&gt; </pre>
<P>
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../org/apache/click/extras/spring/PageScopeResolver.html" title="class in org.apache.click.extras.spring"><CODE>PageScopeResolver</CODE></A>,
<A HREF="../../../../../serialized-form.html#org.apache.click.extras.spring.SpringClickServlet">Serialized Form</A></DL>
<HR>
<P>
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/context/ApplicationContext.html" title="class or interface in org.springframework.context">ApplicationContext</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/spring/SpringClickServlet.html#applicationContext">applicationContext</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Spring application context bean factory.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/spring/SpringClickServlet.html#INJECT_PAGE_BEANS">INJECT_PAGE_BEANS</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Servlet initialization parameter name for the option to have the
SpringClickServlet inject Spring beans into page instances: &nbsp;
<tt>"inject-page-beans"</tt>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&lt;? extends <A HREF="http://click.apache.org/docs/click-api/org/apache/click/Page.html" title="class or interface in org.apache.click">Page</A>&gt;,<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/extras.spring.SpringClickServlet.BeanNameAndMethod.html" title="class or interface in org.apache.click">org.apache.click.extras.spring.SpringClickServlet.BeanNameAndMethod</A>&gt;&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/spring/SpringClickServlet.html#pageSetterBeansMap">pageSetterBeansMap</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The list of page injectable Spring beans, keyed on page class name.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/spring/SpringClickServlet.html#SPRING_PATH">SPRING_PATH</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Servlet initialization parameter name for the path to the Spring XML
application context definition file: &nbsp; <tt>"spring-path"</tt>.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.click.ClickServlet"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class org.apache.click.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html" title="class or interface in org.apache.click">ClickServlet</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#CLICK_FORWARD" title="class or interface in org.apache.click">CLICK_FORWARD</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#CONFIG_SERVICE_CLASS" title="class or interface in org.apache.click">CONFIG_SERVICE_CLASS</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#configService" title="class or interface in org.apache.click">configService</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#FORWARD_PAGE" title="class or interface in org.apache.click">FORWARD_PAGE</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#logger" title="class or interface in org.apache.click">logger</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#memberAccess" title="class or interface in org.apache.click">memberAccess</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#resourceService" title="class or interface in org.apache.click">resourceService</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#TYPE_CONVERTER_CLASS" title="class or interface in org.apache.click">TYPE_CONVERTER_CLASS</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#typeConverter" title="class or interface in org.apache.click">typeConverter</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/spring/SpringClickServlet.html#SpringClickServlet()">SpringClickServlet</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/spring/SpringClickServlet.html#activatePageInstance(org.apache.click.Page)">activatePageInstance</A></B>(<A HREF="http://click.apache.org/docs/click-api/org/apache/click/Page.html" title="class or interface in org.apache.click">Page</A>&nbsp;page)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method associates the <tt>ApplicationContext</tt> with any
<tt>ApplicationContextAware</tt> pages and supports the deserialization
of stateful pages.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/context/ApplicationContext.html" title="class or interface in org.springframework.context">ApplicationContext</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/spring/SpringClickServlet.html#getApplicationContext()">getApplicationContext</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the configured Spring application context.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/spring/SpringClickServlet.html#init()">init</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize the SpringClickServlet and the Spring application context
bean factory.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/Page.html" title="class or interface in org.apache.click">Page</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/spring/SpringClickServlet.html#newPageInstance(java.lang.String, java.lang.Class, javax.servlet.http.HttpServletRequest)">newPageInstance</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;path,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&lt;? extends <A HREF="http://click.apache.org/docs/click-api/org/apache/click/Page.html" title="class or interface in org.apache.click">Page</A>&gt;&nbsp;pageClass,
<A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServletRequest.html" title="class or interface in javax.servlet.http">HttpServletRequest</A>&nbsp;request)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new Spring Page bean if defined in the application context, or
a new Page instance otherwise.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/spring/SpringClickServlet.html#toBeanName(java.lang.Class)">toBeanName</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&lt;?&gt;&nbsp;aClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the Spring beanName for the given class.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.click.ClickServlet"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.apache.click.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html" title="class or interface in org.apache.click">ClickServlet</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#createActionEventDispatcher()" title="class or interface in org.apache.click">createActionEventDispatcher</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#createContext(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean)" title="class or interface in org.apache.click">createContext</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#createControlRegistry()" title="class or interface in org.apache.click">createControlRegistry</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#createErrorPage(java.lang.Class, java.lang.Throwable)" title="class or interface in org.apache.click">createErrorPage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#createPage(java.lang.Class, javax.servlet.http.HttpServletRequest)" title="class or interface in org.apache.click">createPage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#createPage(org.apache.click.Context)" title="class or interface in org.apache.click">createPage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#createPage(java.lang.String, javax.servlet.http.HttpServletRequest)" title="class or interface in org.apache.click">createPage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#createPageImports(org.apache.click.Page)" title="class or interface in org.apache.click">createPageImports</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#createTemplateModel(org.apache.click.Page)" title="class or interface in org.apache.click">createTemplateModel</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#destroy()" title="class or interface in org.apache.click">destroy</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)" title="class or interface in org.apache.click">doGet</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)" title="class or interface in org.apache.click">doPost</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#getConfigService()" title="class or interface in org.apache.click">getConfigService</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#getTypeConverter()" title="class or interface in org.apache.click">getTypeConverter</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#handleAjaxException(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean, java.lang.Throwable, java.lang.Class)" title="class or interface in org.apache.click">handleAjaxException</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#handleException(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean, java.lang.Throwable, java.lang.Class)" title="class or interface in org.apache.click">handleException</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#handleRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean)" title="class or interface in org.apache.click">handleRequest</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#initPage(java.lang.String, java.lang.Class, javax.servlet.http.HttpServletRequest)" title="class or interface in org.apache.click">initPage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#performOnInit(org.apache.click.Page, org.apache.click.Context)" title="class or interface in org.apache.click">performOnInit</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#performOnPostOrGet(org.apache.click.Page, org.apache.click.Context, boolean)" title="class or interface in org.apache.click">performOnPostOrGet</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#performOnProcess(org.apache.click.Page, org.apache.click.Context, org.apache.click.ActionEventDispatcher)" title="class or interface in org.apache.click">performOnProcess</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#performOnRender(org.apache.click.Page, org.apache.click.Context)" title="class or interface in org.apache.click">performOnRender</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#performOnSecurityCheck(org.apache.click.Page, org.apache.click.Context)" title="class or interface in org.apache.click">performOnSecurityCheck</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#performPageAction(org.apache.click.Page, java.lang.String, org.apache.click.Context)" title="class or interface in org.apache.click">performPageAction</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#performRender(org.apache.click.Page, org.apache.click.Context)" title="class or interface in org.apache.click">performRender</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#performRender(org.apache.click.Page, org.apache.click.Context, org.apache.click.ActionResult)" title="class or interface in org.apache.click">performRender</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#processAjaxPageEvents(org.apache.click.Page, org.apache.click.Context)" title="class or interface in org.apache.click">processAjaxPageEvents</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#processAjaxTargetControls(org.apache.click.Context, org.apache.click.ActionEventDispatcher, org.apache.click.ControlRegistry)" title="class or interface in org.apache.click">processAjaxTargetControls</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#processPage(org.apache.click.Page)" title="class or interface in org.apache.click">processPage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#processPageEvents(org.apache.click.Page, org.apache.click.Context)" title="class or interface in org.apache.click">processPageEvents</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#processPageOnDestroy(org.apache.click.Page, long)" title="class or interface in org.apache.click">processPageOnDestroy</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#processPageRequestParams(org.apache.click.Page)" title="class or interface in org.apache.click">processPageRequestParams</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#renderActionResult(org.apache.click.ActionResult, org.apache.click.Page, org.apache.click.Context)" title="class or interface in org.apache.click">renderActionResult</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#renderJSP(org.apache.click.Page)" title="class or interface in org.apache.click">renderJSP</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#renderTemplate(org.apache.click.Page)" title="class or interface in org.apache.click">renderTemplate</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#setPageResponseHeaders(javax.servlet.http.HttpServletResponse, java.util.Map)" title="class or interface in org.apache.click">setPageResponseHeaders</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#setRequestAttributes(org.apache.click.Page)" title="class or interface in org.apache.click">setRequestAttributes</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_javax.servlet.http.HttpServlet"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class javax.servlet.http.<A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html" title="class or interface in javax.servlet.http">HttpServlet</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html#doDelete(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)" title="class or interface in javax.servlet.http">doDelete</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html#doHead(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)" title="class or interface in javax.servlet.http">doHead</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html#doOptions(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)" title="class or interface in javax.servlet.http">doOptions</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html#doPut(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)" title="class or interface in javax.servlet.http">doPut</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html#doTrace(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)" title="class or interface in javax.servlet.http">doTrace</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html#getLastModified(javax.servlet.http.HttpServletRequest)" title="class or interface in javax.servlet.http">getLastModified</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)" title="class or interface in javax.servlet.http">service</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)" title="class or interface in javax.servlet.http">service</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_javax.servlet.GenericServlet"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class javax.servlet.<A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html" title="class or interface in javax.servlet">GenericServlet</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html#getInitParameter(java.lang.String)" title="class or interface in javax.servlet">getInitParameter</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html#getInitParameterNames()" title="class or interface in javax.servlet">getInitParameterNames</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html#getServletConfig()" title="class or interface in javax.servlet">getServletConfig</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html#getServletContext()" title="class or interface in javax.servlet">getServletContext</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html#getServletInfo()" title="class or interface in javax.servlet">getServletInfo</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html#getServletName()" title="class or interface in javax.servlet">getServletName</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html#init(javax.servlet.ServletConfig)" title="class or interface in javax.servlet">init</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html#log(java.lang.String)" title="class or interface in javax.servlet">log</A>, <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html#log(java.lang.String, java.lang.Throwable)" title="class or interface in javax.servlet">log</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ FIELD DETAIL =========== -->
<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="INJECT_PAGE_BEANS"><!-- --></A><H3>
INJECT_PAGE_BEANS</H3>
<PRE>
public static final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>INJECT_PAGE_BEANS</B></PRE>
<DL>
<DD>The Servlet initialization parameter name for the option to have the
SpringClickServlet inject Spring beans into page instances: &nbsp;
<tt>"inject-page-beans"</tt>.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#org.apache.click.extras.spring.SpringClickServlet.INJECT_PAGE_BEANS">Constant Field Values</A></DL>
</DL>
<HR>
<A NAME="SPRING_PATH"><!-- --></A><H3>
SPRING_PATH</H3>
<PRE>
public static final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>SPRING_PATH</B></PRE>
<DL>
<DD>The Servlet initialization parameter name for the path to the Spring XML
application context definition file: &nbsp; <tt>"spring-path"</tt>.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#org.apache.click.extras.spring.SpringClickServlet.SPRING_PATH">Constant Field Values</A></DL>
</DL>
<HR>
<A NAME="applicationContext"><!-- --></A><H3>
applicationContext</H3>
<PRE>
protected <A HREF="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/context/ApplicationContext.html" title="class or interface in org.springframework.context">ApplicationContext</A> <B>applicationContext</B></PRE>
<DL>
<DD>Spring application context bean factory.
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="pageSetterBeansMap"><!-- --></A><H3>
pageSetterBeansMap</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&lt;? extends <A HREF="http://click.apache.org/docs/click-api/org/apache/click/Page.html" title="class or interface in org.apache.click">Page</A>&gt;,<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/extras.spring.SpringClickServlet.BeanNameAndMethod.html" title="class or interface in org.apache.click">org.apache.click.extras.spring.SpringClickServlet.BeanNameAndMethod</A>&gt;&gt; <B>pageSetterBeansMap</B></PRE>
<DL>
<DD>The list of page injectable Spring beans, keyed on page class name.
<P>
<DL>
</DL>
</DL>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="SpringClickServlet()"><!-- --></A><H3>
SpringClickServlet</H3>
<PRE>
public <B>SpringClickServlet</B>()</PRE>
<DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="init()"><!-- --></A><H3>
init</H3>
<PRE>
public void <B>init</B>()
throws <A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletException.html" title="class or interface in javax.servlet">ServletException</A></PRE>
<DL>
<DD>Initialize the SpringClickServlet and the Spring application context
bean factory. An Spring <tt>ClassPathXmlApplicationContext</tt> bean
factory is used and initialize with the servlet <tt>init-param</tt>
named <tt>"spring-path"</tt>.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#init()" title="class or interface in org.apache.click">init</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html" title="class or interface in org.apache.click">ClickServlet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletException.html" title="class or interface in javax.servlet">ServletException</A></CODE> - if the click app could not be initialized<DT><B>See Also:</B><DD><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#init()" title="class or interface in org.apache.click"><CODE>ClickServlet.init()</CODE></A></DL>
</DD>
</DL>
<HR>
<A NAME="newPageInstance(java.lang.String, java.lang.Class, javax.servlet.http.HttpServletRequest)"><!-- --></A><H3>
newPageInstance</H3>
<PRE>
protected <A HREF="http://click.apache.org/docs/click-api/org/apache/click/Page.html" title="class or interface in org.apache.click">Page</A> <B>newPageInstance</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;path,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&lt;? extends <A HREF="http://click.apache.org/docs/click-api/org/apache/click/Page.html" title="class or interface in org.apache.click">Page</A>&gt;&nbsp;pageClass,
<A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServletRequest.html" title="class or interface in javax.servlet.http">HttpServletRequest</A>&nbsp;request)
throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></PRE>
<DL>
<DD>Create a new Spring Page bean if defined in the application context, or
a new Page instance otherwise.
<p/>
If the "inject-page-beans" option is enabled this method will inject
any Spring beans matching the Page's properties.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#newPageInstance(java.lang.String, java.lang.Class, javax.servlet.http.HttpServletRequest)" title="class or interface in org.apache.click">newPageInstance</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html" title="class or interface in org.apache.click">ClickServlet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>path</CODE> - the request page path<DD><CODE>pageClass</CODE> - the page Class the request is mapped to<DD><CODE>request</CODE> - the page request
<DT><B>Returns:</B><DD>a new Page object
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></CODE> - if an error occurs creating the Page<DT><B>See Also:</B><DD><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#newPageInstance(java.lang.String, java.lang.Class, javax.servlet.http.HttpServletRequest)" title="class or interface in org.apache.click"><CODE>ClickServlet.newPageInstance(String, Class, HttpServletRequest)</CODE></A></DL>
</DD>
</DL>
<HR>
<A NAME="getApplicationContext()"><!-- --></A><H3>
getApplicationContext</H3>
<PRE>
protected <A HREF="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/context/ApplicationContext.html" title="class or interface in org.springframework.context">ApplicationContext</A> <B>getApplicationContext</B>()</PRE>
<DL>
<DD>Return the configured Spring application context.
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the configured Spring application context.</DL>
</DD>
</DL>
<HR>
<A NAME="activatePageInstance(org.apache.click.Page)"><!-- --></A><H3>
activatePageInstance</H3>
<PRE>
protected void <B>activatePageInstance</B>(<A HREF="http://click.apache.org/docs/click-api/org/apache/click/Page.html" title="class or interface in org.apache.click">Page</A>&nbsp;page)</PRE>
<DL>
<DD>This method associates the <tt>ApplicationContext</tt> with any
<tt>ApplicationContextAware</tt> pages and supports the deserialization
of stateful pages.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#activatePageInstance(org.apache.click.Page)" title="class or interface in org.apache.click">activatePageInstance</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html" title="class or interface in org.apache.click">ClickServlet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>page</CODE> - the page instance to activate<DT><B>See Also:</B><DD><A HREF="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#activatePageInstance(org.apache.click.Page)" title="class or interface in org.apache.click"><CODE>ClickServlet.activatePageInstance(Page)</CODE></A></DL>
</DD>
</DL>
<HR>
<A NAME="toBeanName(java.lang.Class)"><!-- --></A><H3>
toBeanName</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toBeanName</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&lt;?&gt;&nbsp;aClass)</PRE>
<DL>
<DD>Return the Spring beanName for the given class.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>aClass</CODE> - the class to get the Spring bean name from
<DT><B>Returns:</B><DD>the class bean name</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/click/extras/spring/PageScopeResolver.html" title="class in org.apache.click.extras.spring"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/apache/click/extras/spring/SpringClickServlet.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="SpringClickServlet.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
<style type='text/css'>.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;}.typ{color:#000;}.lit{color:#066;}.pun{color:#660;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}.dec{color:#606;}pre.prettyprint{padding:1em;border:1px solid #888;overflow:auto;}@media print{.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;font-style:italic;}.typ{color:#000;font-weight:bold;}.lit{color:#044;}.pun{color:#440;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}}</style><script type='text/javascript'>var PR_keywords={};(function(){var CPP_KEYWORDS='abstract bool break case catch char class const '+'const_cast continue default delete deprecated dllexport dllimport do '+'double dynamic_cast else enum explicit extern false float for friend '+'goto if inline int long mutable naked namespace new noinline noreturn '+'nothrow novtable operator private property protected public register '+'reinterpret_cast return selectany short signed sizeof static '+'static_cast struct switch template this thread throw true try typedef '+'typeid typename union unsigned using declaration, directive uuid '+'virtual void volatile while typeof';var CSHARP_KEYWORDS='as base by byte checked decimal delegate descending '+'event finally fixed foreach from group implicit in interface internal '+'into is lock null object override orderby params readonly ref sbyte '+'sealed stackalloc string select uint ulong unchecked unsafe ushort var';var JAVA_KEYWORDS='package synchronized boolean implements import throws '+'instanceof transient extends final strictfp native super';var JSCRIPT_KEYWORDS='debugger export function with NaN Infinity';var PERL_KEYWORDS='require sub unless until use elsif BEGIN END';var PYTHON_KEYWORDS='and assert def del elif except exec global lambda '+'not or pass print raise yield False True None';var RUBY_KEYWORDS='then end begin rescue ensure module when undef next '+'redo retry alias defined';var SH_KEYWORDS='done fi';var KEYWORDS=[CPP_KEYWORDS,CSHARP_KEYWORDS,JAVA_KEYWORDS,JSCRIPT_KEYWORDS,PERL_KEYWORDS,PYTHON_KEYWORDS,RUBY_KEYWORDS,SH_KEYWORDS];for(var k=0;k<KEYWORDS.length;k++){var kw=KEYWORDS[k].split(' ');for(var i=0;i<kw.length;i++){if(kw[i]){PR_keywords[kw[i]]=true;}}}}).call(this);var PR_STRING='str';var PR_KEYWORD='kwd';var PR_COMMENT='com';var PR_TYPE='typ';var PR_LITERAL='lit';var PR_PUNCTUATION='pun';var PR_PLAIN='pln';var PR_TAG='tag';var PR_DECLARATION='dec';var PR_SOURCE='src';var PR_ATTRIB_NAME='atn';var PR_ATTRIB_VALUE='atv';var PR_TAB_WIDTH=8;function PR_isWordChar(ch){return(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z');}function PR_spliceArrayInto(inserted,container,containerPosition,countReplaced){inserted.unshift(containerPosition,countReplaced||0);try{container.splice.apply(container,inserted);}finally{inserted.splice(0,2);}}var REGEXP_PRECEDER_PATTERN=(function(){var preceders=['!','!=','!==','#','%','%=','&','&&','&&=','&=','(','*','*=','+=',',','-=','->','/','/=',':','::',';','<','<<','<<=','<=','=','==','===','>','>=','>>','>>=','>>>','>>>=','?','@','[','^','^=','^^','^^=','{','|','|=','||','||=','~','break','case','continue','delete','do','else','finally','instanceof','return','throw','try','typeof'];var pattern='(?:'+'(?:(?:^|[^0-9\.])\\.{1,3})|'+'(?:(?:^|[^\\+])\\+)|'+'(?:(?:^|[^\\-])-)';for(var i=0;i<preceders.length;++i){var preceder=preceders[i];if(PR_isWordChar(preceder.charAt(0))){pattern+='|\\b'+preceder;}else{pattern+='|'+preceder.replace(/([^=<>:&])/g,'\\$1');}}pattern+='|^)\\s*$';return new RegExp(pattern);})();var pr_amp=/&/g;var pr_lt=/</g;var pr_gt=/>/g;var pr_quot=/"/g;function PR_attribToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;').replace(pr_quot,'&quot;');}function PR_textToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;');}var pr_ltEnt=/&lt;/g;var pr_gtEnt=/&gt;/g;var pr_aposEnt=/&apos;/g;var pr_quotEnt=/&quot;/g;var pr_ampEnt=/&amp;/g;function PR_htmlToText(html){var pos=html.indexOf('&');if(pos<0){return html;}for(--pos;(pos=html.indexOf('&#',pos+1))>=0;){var end=html.indexOf(';',pos);if(end>=0){var num=html.substring(pos+3,end);var radix=10;if(num&&num.charAt(0)=='x'){num=num.substring(1);radix=16;}var codePoint=parseInt(num,radix);if(!isNaN(codePoint)){html=(html.substring(0,pos)+String.fromCharCode(codePoint)+html.substring(end+1));}}}return html.replace(pr_ltEnt,'<').replace(pr_gtEnt,'>').replace(pr_aposEnt,"'").replace(pr_quotEnt,'"').replace(pr_ampEnt,'&');}function PR_isRawContent(node){return'XMP'==node.tagName;}var PR_innerHtmlWorks=null;function PR_getInnerHtml(node){if(null===PR_innerHtmlWorks){var testNode=document.createElement('PRE');testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));PR_innerHtmlWorks=!/</.test(testNode.innerHTML);}if(PR_innerHtmlWorks){var content=node.innerHTML;if(PR_isRawContent(node)){content=PR_textToHtml(content);}return content;}var out=[];for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}return out.join('');}function PR_normalizedHtml(node,out){switch(node.nodeType){case 1:var name=node.tagName.toLowerCase();out.push('\074',name);for(var i=0;i<node.attributes.length;++i){var attr=node.attributes[i];if(!attr.specified){continue;}out.push(' ');PR_normalizedHtml(attr,out);}out.push('>');for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}if(node.firstChild||!/^(?:br|link|img)$/.test(name)){out.push('<\/',name,'>');}break;case 2:out.push(node.name.toLowerCase(),'="',PR_attribToHtml(node.value),'"');break;case 3:case 4:out.push(PR_textToHtml(node.nodeValue));break;}}function PR_tabExpander(tabWidth){var SPACES=' ';var charInLine=0;return function(plainText){var out=null;var pos=0;for(var i=0,n=plainText.length;i<n;++i){var ch=plainText.charAt(i);switch(ch){case'\t':if(!out){out=[];}out.push(plainText.substring(pos,i));var nSpaces=tabWidth-(charInLine%tabWidth);charInLine+=nSpaces;for(;nSpaces>=0;nSpaces-=SPACES.length){out.push(SPACES.substring(0,nSpaces));}pos=i+1;break;case'\n':charInLine=0;break;default:++charInLine;}}if(!out){return plainText;}out.push(plainText.substring(pos));return out.join('');};}var pr_chunkPattern=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var pr_commentPrefix=/^<!--/;var pr_cdataPrefix=/^<\[CDATA\[/;var pr_brPrefix=/^<br\b/i;function PR_extractTags(s){var matches=s.match(pr_chunkPattern);var sourceBuf=[];var sourceBufLen=0;var extractedTags=[];if(matches){for(var i=0,n=matches.length;i<n;++i){var match=matches[i];if(match.length>1&&match.charAt(0)==='<'){if(pr_commentPrefix.test(match)){continue;}if(pr_cdataPrefix.test(match)){sourceBuf.push(match.substring(9,match.length-3));sourceBufLen+=match.length-12;}else if(pr_brPrefix.test(match)){sourceBuf.push('\n');sourceBufLen+=1;}else{extractedTags.push(sourceBufLen,match);}}else{var literalText=PR_htmlToText(match);sourceBuf.push(literalText);sourceBufLen+=literalText.length;}}}return{source:sourceBuf.join(''),tags:extractedTags};}function PR_createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns){var shortcuts={};(function(){var allPatterns=shortcutStylePatterns.concat(fallthroughStylePatterns);for(var i=allPatterns.length;--i>=0;){var patternParts=allPatterns[i];var shortcutChars=patternParts[3];if(shortcutChars){for(var c=shortcutChars.length;--c>=0;){shortcuts[shortcutChars.charAt(c)]=patternParts;}}}})();var nPatterns=fallthroughStylePatterns.length;return function(sourceCode,opt_basePos){opt_basePos=opt_basePos||0;var decorations=[opt_basePos,PR_PLAIN];var lastToken='';var pos=0;var tail=sourceCode;while(tail.length){var style;var token=null;var patternParts=shortcuts[tail.charAt(0)];if(patternParts){var match=tail.match(patternParts[1]);token=match[0];style=patternParts[0];}else{for(var i=0;i<nPatterns;++i){patternParts=fallthroughStylePatterns[i];var contextPattern=patternParts[2];if(contextPattern&&!contextPattern.test(lastToken)){continue;}var match=tail.match(patternParts[1]);if(match){token=match[0];style=patternParts[0];break;}}if(!token){style=PR_PLAIN;token=tail.substring(0,1);}}decorations.push(opt_basePos+pos,style);pos+=token.length;tail=tail.substring(token.length);if(style!==PR_COMMENT&&/\S/.test(token)){lastToken=token;}}return decorations;};}var PR_C_STYLE_STRING_AND_COMMENT_LEXER=PR_createSimpleLexer([[PR_STRING,/^\'(?:[^\\\']|\\[\s\S])*(?:\'|$)/,null,"'"],[PR_STRING,/^"(?:[^\\"]|\\[\s\S])*(?:"|$)/,null,'"'],[PR_STRING,/^\`(?:[^\\\`]|\\[\s\S])*(?:\`|$)/,null,'`']],[[PR_PLAIN,/^(?:[^\'"\`\/\#]+)/,null,' \r\n'],[PR_COMMENT,/^#[^\r\n]*/,null,'#'],[PR_COMMENT,/^\/\/[^\r\n]*/,null],[PR_STRING,/^\/(?:[^\\\*\/]|\\[\s\S])+(?:\/|$)/,REGEXP_PRECEDER_PATTERN],[PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null]]);function PR_splitStringAndCommentTokens(sourceCode){return PR_C_STYLE_STRING_AND_COMMENT_LEXER(sourceCode);}var PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER=PR_createSimpleLexer([],[[PR_PLAIN,/^\s+/,null,' \r\n'],[PR_PLAIN,/^[a-z_$@][a-z_$@0-9]*/i,null],[PR_LITERAL,/^0x[a-f0-9]+[a-z]/i,null],[PR_LITERAL,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?[a-z]*/i,null,'123456789'],[PR_PUNCTUATION,/^[^\s\w\.$@]+/,null]]);function PR_splitNonStringNonCommentTokens(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_PLAIN){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecs=PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER(chunk,start);for(var j=0,m=subDecs.length;j<m;j+=2){var subStyle=subDecs[j+1];if(subStyle===PR_PLAIN){var subStart=subDecs[j];var subEnd=j+2<m?subDecs[j+2]:chunk.length;var token=source.substring(subStart,subEnd);if(token=='.'){subDecs[j+1]=PR_PUNCTUATION;}else if(token in PR_keywords){subDecs[j+1]=PR_KEYWORD;}else if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)){subDecs[j+1]=token.charAt(0)=='@'?PR_LITERAL:PR_TYPE;}}}PR_spliceArrayInto(subDecs,decorations,i,2);i+=subDecs.length-2;}}return decorations;}var PR_MARKUP_LEXER=PR_createSimpleLexer([],[[PR_PLAIN,/^[^<]+/,null],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/,null],[PR_COMMENT,/^<!--[\s\S]*?(?:-->|$)/,null],[PR_SOURCE,/^<\?[\s\S]*?(?:\?>|$)/,null],[PR_SOURCE,/^<%[\s\S]*?(?:%>|$)/,null],[PR_SOURCE,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[PR_TAG,/^<\/?\w[^<>]*>/,null]]);var PR_SOURCE_CHUNK_PARTS=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function PR_tokenizeMarkup(source){var decorations=PR_MARKUP_LEXER(source);for(var i=0;i<decorations.length;i+=2){if(decorations[i+1]===PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var sourceChunk=source.substring(start,end);var match=(sourceChunk.match(PR_SOURCE_CHUNK_PARTS));if(match){decorations.splice(i,2,start,PR_TAG,start+match[1].length,PR_SOURCE,start+match[1].length+(match[2]||'').length,PR_TAG);}}}return decorations;}var PR_TAG_LEXER=PR_createSimpleLexer([[PR_ATTRIB_VALUE,/^\'[^\']*(?:\'|$)/,null,"'"],[PR_ATTRIB_VALUE,/^"[^"]*(?:"|$)/,null,'"'],[PR_PUNCTUATION,/^[<>\/=]+/,null,'<>/=']],[[PR_TAG,/^[\w-]+/,/^</],[PR_ATTRIB_VALUE,/^[\w-]+/,/^=/],[PR_ATTRIB_NAME,/^[\w-]+/,null],[PR_PLAIN,/^\s+/,null,' \r\n']]);function PR_splitTagAttributes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_TAG){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecorations=PR_TAG_LEXER(chunk,start);PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceNodes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style==PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var subDecorations=PR_decorateSource(source.substring(start,end));for(var j=0,m=subDecorations.length;j<m;j+=2){subDecorations[j]+=start;}PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceAttributes(source,decorations){var nextValueIsSource=false;for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_ATTRIB_NAME){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;nextValueIsSource=/^on|^style$/i.test(source.substring(start,end));}else if(style==PR_ATTRIB_VALUE){if(nextValueIsSource){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var attribValue=source.substring(start,end);var attribLen=attribValue.length;var quoted=(attribLen>=2&&/^["\']/.test(attribValue)&&attribValue.charAt(0)===attribValue.charAt(attribLen-1));var attribSource;var attribSourceStart;var attribSourceEnd;if(quoted){attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue;}else{attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue.substring(1,attribValue.length-1);}var attribSourceDecorations=PR_decorateSource(attribSource);for(var j=0,m=attribSourceDecorations.length;j<m;j+=2){attribSourceDecorations[j]+=attribSourceStart;}if(quoted){attribSourceDecorations.push(attribSourceEnd,PR_ATTRIB_VALUE);PR_spliceArrayInto(attribSourceDecorations,decorations,i+2,0);}else{PR_spliceArrayInto(attribSourceDecorations,decorations,i,2);}}nextValueIsSource=false;}}return decorations;}function PR_decorateSource(sourceCode){var decorations=PR_splitStringAndCommentTokens(sourceCode);decorations=PR_splitNonStringNonCommentTokens(sourceCode,decorations);return decorations;}function PR_decorateMarkup(sourceCode){var decorations=PR_tokenizeMarkup(sourceCode);decorations=PR_splitTagAttributes(sourceCode,decorations);decorations=PR_splitSourceNodes(sourceCode,decorations);decorations=PR_splitSourceAttributes(sourceCode,decorations);return decorations;}function PR_recombineTagsAndDecorations(sourceText,extractedTags,decorations){var html=[];var outputIdx=0;var openDecoration=null;var currentDecoration=null;var tagPos=0;var decPos=0;var tabExpander=PR_tabExpander(PR_TAB_WIDTH);function emitTextUpTo(sourceIdx){if(sourceIdx>outputIdx){if(openDecoration&&openDecoration!==currentDecoration){html.push('</span>');openDecoration=null;}if(!openDecoration&&currentDecoration){openDecoration=currentDecoration;html.push('<span class="',openDecoration,'">');}var htmlChunk=PR_textToHtml(tabExpander(sourceText.substring(outputIdx,sourceIdx))).replace(/(\r\n?|\n| ) /g,'$1&nbsp;').replace(/\r\n?|\n/g,'&nbsp;<br>');html.push(htmlChunk);outputIdx=sourceIdx;}}while(true){var outputTag;if(tagPos<extractedTags.length){if(decPos<decorations.length){outputTag=extractedTags[tagPos]<=decorations[decPos];}else{outputTag=true;}}else{outputTag=false;}if(outputTag){emitTextUpTo(extractedTags[tagPos]);if(openDecoration){html.push('</span>');openDecoration=null;}html.push(extractedTags[tagPos+1]);tagPos+=2;}else if(decPos<decorations.length){emitTextUpTo(decorations[decPos]);currentDecoration=decorations[decPos+1];decPos+=2;}else{break;}}emitTextUpTo(sourceText.length);if(openDecoration){html.push('</span>');}return html.join('');}function prettyPrintOne(sourceCodeHtml){try{var sourceAndExtractedTags=PR_extractTags(sourceCodeHtml);var source=sourceAndExtractedTags.source;var extractedTags=sourceAndExtractedTags.tags;var isMarkup=/^\s*</.test(source)&&/>\s*$/.test(source);var decorations=isMarkup?PR_decorateMarkup(source):PR_decorateSource(source);return PR_recombineTagsAndDecorations(source,extractedTags,decorations);}catch(e){if('console'in window){console.log(e);console.trace();}return sourceCodeHtml;}}var PR_SHOULD_USE_CONTINUATION=true;function prettyPrint(opt_whenDone){var codeSegments=[document.getElementsByTagName('pre'),document.getElementsByTagName('code'),document.getElementsByTagName('xmp')];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0;j<codeSegments[i].length;++j){elements.push(codeSegments[i][j]);}}codeSegments=null;var k=0;function doWork(){var endTime=(PR_SHOULD_USE_CONTINUATION?new Date().getTime()+250:Infinity);for(;k<elements.length&&new Date().getTime()<endTime;k++){var cs=elements[k];if(cs.className&&cs.className.indexOf('prettyprint')>=0){var nested=false;for(var p=cs.parentNode;p!=null;p=p.parentNode){if((p.tagName=='pre'||p.tagName=='code'||p.tagName=='xmp')&&p.className&&p.className.indexOf('prettyprint')>=0){nested=true;break;}}if(!nested){var content=PR_getInnerHtml(cs);content=content.replace(/(?:\r\n?|\n)$/,'');var newContent=prettyPrintOne(content);if(!PR_isRawContent(cs)){cs.innerHTML=newContent;}else{var pre=document.createElement('PRE');for(var i=0;i<cs.attributes.length;++i){var a=cs.attributes[i];if(a.specified){pre.setAttribute(a.name,a.value);}}pre.innerHTML=newContent;cs.parentNode.replaceChild(pre,cs);}}}}if(k<elements.length){setTimeout(doWork,250);}else if(opt_whenDone){opt_whenDone();}}doWork();}</script><script type='text/javascript'>prettyPrint();</script></BODY>
</HTML>