1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc on Fri Aug 22 03:43:57 EDT 2003 -->
<TITLE>
org.apache.struts.util (Apache Struts API Documentation)
</TITLE>
<META NAME="keywords" CONTENT="org.apache.struts.util package">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="org.apache.struts.util (Apache Struts API Documentation)";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_top"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-use.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../org/apache/struts/upload/package-summary.html"><B>PREV PACKAGE</B></A>
<A HREF="../../../../org/apache/struts/validator/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html" TARGET="_top"><B>FRAMES</B></A>
<A HREF="package-summary.html" TARGET="_top"><B>NO FRAMES</B></A>
<SCRIPT>
<!--
if(window==top) {
document.writeln('<A HREF="../../../../allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>
<H2>
Package org.apache.struts.util
</H2>
The Utilities package provides a variety of families of classes,
to solve problems that are commonly encountered in building web applications.
<P>
<B>See:</B>
<BR>
<A HREF="#package_description"><B>Description</B></A>
<P>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Class Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="ErrorMessages.html">ErrorMessages</A></B></TD>
<TD><B>Deprecated.</B> <I>Use org.apache.struts.action.ActionErrors instead</I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="GenericDataSource.html">GenericDataSource</A></B></TD>
<TD><B>Deprecated.</B> <I>Use a <code>BasicDataSource</code> directly, or indirectly
acquire a data source provided by your container</I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="ImageButtonBean.html">ImageButtonBean</A></B></TD>
<TD>A simple JavaBean to encapsulate the request parameters sent for an HTML
input element of type image.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="IteratorAdapter.html">IteratorAdapter</A></B></TD>
<TD><B>Deprecated.</B> <I>Use commons-collections' IteratorUtils.asIterator(Enumeration).</I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="LabelValueBean.html">LabelValueBean</A></B></TD>
<TD>A simple JavaBean to represent label-value pairs.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="MessageResources.html">MessageResources</A></B></TD>
<TD>General purpose abstract class that describes an API for retrieving
Locale-sensitive messages from underlying resource locations of an
unspecified design, and optionally utilizing the <code>MessageFormat</code>
class to produce internationalized messages with parametric replacement.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="MessageResourcesFactory.html">MessageResourcesFactory</A></B></TD>
<TD>Factory for <code>MessageResources</code> instances.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="PropertyMessageResources.html">PropertyMessageResources</A></B></TD>
<TD>Concrete subclass of <code>MessageResources</code> that reads message keys
and corresponding strings from named property resources in the same manner
that <code>java.util.PropertyResourceBundle</code> does.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="PropertyMessageResourcesFactory.html">PropertyMessageResourcesFactory</A></B></TD>
<TD>Factory for <code>PropertyMessageResources</code> instances.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="RequestUtils.html">RequestUtils</A></B></TD>
<TD>General purpose utility methods related to processing a servlet request
in the Struts controller framework.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="ResponseUtils.html">ResponseUtils</A></B></TD>
<TD>General purpose utility methods related to generating a servlet response
in the Struts controller framework.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="ServletContextWriter.html">ServletContextWriter</A></B></TD>
<TD>A PrintWriter implementation that uses the logging facilities of a
<code>javax.servlet.ServletContext</code> to output its results.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="StrutsValidator.html">StrutsValidator</A></B></TD>
<TD><B>Deprecated.</B> <I>As of Struts 1.1, replaced by <A HREF="../../../../org/apache/struts/validator/FieldChecks.html"><CODE>FieldChecks</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="StrutsValidatorUtil.html">StrutsValidatorUtil</A></B></TD>
<TD><B>Deprecated.</B> <I>As of Struts 1.1, replaced by <A HREF="../../../../org/apache/struts/validator/Resources.html"><CODE>Resources</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="TokenProcessor.html">TokenProcessor</A></B></TD>
<TD>TokenProcessor is responsible for handling all token related functionality.</TD>
</TR>
</TABLE>
<P>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Exception Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="AppException.html">AppException</A></B></TD>
<TD><B>Deprecated.</B> <I>use <A HREF="../../../../org/apache/struts/util/ModuleException.html"><CODE>ModuleException</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="ModuleException.html">ModuleException</A></B></TD>
<TD>Used for specialized exception handling.</TD>
</TR>
</TABLE>
<P>
<A NAME="package_description"><!-- --></A><H2>
Package org.apache.struts.util Description
</H2>
<P>
The Utilities package provides a variety of families of classes,
to solve problems that are commonly encountered in building web applications.
<br><br>
<a name="doc.Description"></a>
<div align="center">
<a href="#doc.Intro">[Introduction]</a>
<a href="#doc.Beans">[Beans]</a>
<a href="#doc.Utilities">[Servlet Utilities]</a>
<a href="#doc.Messages">[Message Resources]</a>
</div>
<hr>
<a name="doc.Intro"></a>
<h3>Introduction</h3>
<p>The Struts Utilities Package offers several families
of classes that assist in solving commonly encountered problems when building
web applications. Most of the classes in this package do not rely on the
controller servlet framework, or the custom tag libraries, so they are also
suitable for general Java application programming. The following families
are included:</p>
<ul>
<li><a href="#doc.Beans">Beans</a> - A small set of utility beans useful for
encapsulating form elements.</li>
<li><a href="#doc.Utilities">Servlet Utilities</a> - A set of classes useful
for working with servlet-related classes.</li>
<li><a href="#doc.Messages">Message Resources</a> - A family of classes that
features access to internationalized message strings based on a message
key coupled with a <code>java.util.Locale</code> object representing a
particular user's preferred language.</li>
</ul>
<hr>
<a name="doc.Beans"></a>
<h3>Beans</h3>
<p> The <code>ImageButtonBean</code> is a simple JavaBean to encapsulate the
request parameters sent for an HTML input element of type image. The
<code>LabelValueBean</code> is a simple JavaBean to represent label-value
pairs, especially useful for html option elements.
</p>
<hr>
<a name="doc.Utilities"></a>
<h3>Servlet Utilities</h3>
<p> The <code>RequestUtils</code> is a general purpose utility methods
related to processing a servlet request. The <code>ResponseUtils</code>
is a general purpose utility methods related to generating a servlet
response. The <code>ServletContextWriter</code> is a PrintWriter
implementation that uses the logging facilities of a
<code>javax.servlet.ServletContext</code> to output its results.
</p>
<hr>
<a name="doc.Messages"></a>
<h3>Message Resources</h3>
<h5>Background</h5>
<p>Modern applications often include the requirement to support multiple
languages, for users who prefer to interact in a language other than the
default language configured on the server platform. In addition, sentences
often need to be constructed, with dynamic content whose placement in the
message depends on the standard sentence structure in that particular
language.</p>
<p>The standard Java platform includes a family of classes
(<code>java.util.ResourceBundle</code>) designed to support looking up message
strings based on a standard "key". The resource bundle classes automatically
access a Java class (or properties file) that is named with a naming
convention that includes the Locale to which messages in that class (or file)
pertain. However, this selection is based only on the default Locale of the
server platform, and cannot be adjusted on a per-user basis as required for an
internationalized web application.</p>
<p>Struts includes a family of classes
(<code>org.apache.struts.util.MessageResources</code>) that extends the basic
approach to looking up message strings by key, allowing you to optionally
specify a Locale along with the key. In this way, you can build applications
that let your users select which Locale they wish to operate within, and then
look up messages in that language - using the same message keys no matter what
language is selected.</p>
<p>In addition to supporting dynamic selection of a Locale for message lookup,
the <code>MessageResources</code> family of classes optionally allow you to
specify up to four parameter replacement objects, which are used to replace the
parameter placeholders "{0}" through "{3}" in the retrieved message. This
replacement uses the facilities of the standard Java
<code>java.text.MessageFormat</code> class, which supports many extended
formatting capabilities as well.</p>
<p>For more information about internationalized messages, consult the following
resources in your Java Development Kit documentation bundle:</p>
<ul>
<li><em>Internationalization Info</em> - General information on Java's standard
support for internationalized applications can be found at
<code><$JAVA_HOME/docs/guide/internat/index.html></code>.
The "Internationalization Overview" section includes useful information
about Locales, localized resources, message formatting, and other
relevant topics.</li>
<li><em>Internationalization Tutorial</em> - The Java Language Tutorial has a
comprehensive trail covering internationalization, available at:
<a href="http://java.sun.com/docs/books/tutorial/i18n/index.html">
http://java.sun.com/docs/books/tutorial/i18n/index.html</a>.</li>
<li><em>Javadoc APIs</em> - You will want to consult the Javadoc API
documentation for the following standard Java classes:
<ul>
<li><code>java.text.MessageFormat</code>
<li><code>java.util.ResourceBundle</code>
<li><code>java.util.PropertyResourceBundle</code>
<li><code>java.util.Properties</code> - See the documentation for the
<code>load()</code> method for the valid syntax of properties files
that you prepare.</li>
</ul></li>
</ul>
<h5>Using the Standard MessageResources Implementation</h5>
<p>The standard <code>MessageResources</code> implementation provided by the
Struts library uses Java properties files to initialize message strings, in a
manner very similar to that supported by the
<code>java.util.PropertyResourceBundle</code> class. The following steps are
required to use these facilities in your Java application.</p>
<p>First, prepare a Java properties file for each language (or Locale) in which
you wish to support your messages. The filenames you use must conform to the
naming convention for property resource bundles, as described in the
documentation referenced above. Be sure you use the same message keys in each
file to identify the same message.</p>
<p>For example, you might prepare files in French, Spanish, and English that
contain language-specific versions of the word "Hello". The French file would
be named <code>Messages_fr.properties</code> and contain the following:</p>
<pre>
hi=Bonjour
</pre>
<p>while the Spanish and English files would be named
<code>Messages_es.properties</code> and <code>Messages_en.properties</code>
respectively. The corresponding message string definitions would say
<code>hi=Hola</code> and <code>hi=Hello</code> in these files.</p>
<p>Second, place these properties files into the class path for your
application, exactly as you would with class files themselves. The name
actually used to load resources will look like a fully qualified Java class
name (with appropriate package prefixes), so the file should be nested inside
a directory structure that matches the packaging (either in an unpacked
directory, or within a JAR file, as appropriate). For example, assume you
place directory "foo" on your classpath, and stored the above properties files
in directory "foo/com/mycompany/mypackage". (If you were using a JAR file like
"foo.jar" instead, the files would be in directory "com/mycompany/mypackage"
within the JAR file).
<p>Third, initialize a <code>MessageResources</code> object that corresponds
to the set of properties files for a particular name, within a particular
package. The easiest way to do this is to initialize a variable in your main
application class, like this:</p>
<pre>
public static MessageResources messages =
MessageResources.getMessageResources("com.mycompany.mypackage.Messages");
</pre>
<p>Note that the "com.mycompany.mypackage" part of the name matches the package
directory into which you placed your properties files, and "Messages" is the
filename prefix for the particular family of properties files supported by this
<code>MessageResources</code> instance. Depending on your development process,
you might find it convenient to store all message strings for an entire
application in a single properties file family, or to have several families -
in Struts, for example, there is a family of properties files for each Java
package.</p>
<p>To access a message string with a particular Locale, execute a statement
like this:</p>
<pre>
Locale locale = ... select the locale to be used ...
String message = messages.getMessage(locale, "hi");
</pre>
<p>In this case, the variable <code>message</code> will contain the message
string corresponding to the key "hi", in the language that corresponds to the
locale that was selected.</p>
<p>For an example of message formatting with replaceable parameters, assume
that the message strings looked like this, instead (only the English version
is shown - corresponding changes would be made in the other files):</p>
<pre>
hi=Hello {0}
</pre>
<p>Now, you can personalize the retrieved message like this:</p>
<pre>
Locale locale = ... select the locale to be used ...
String name = "Joe";
String message = messages.getMessage(locale, "hi", name);
</pre>
<p>and the marker "{0}" will have been replaced by the specified name (Joe),
no matter which language is in use. See the JavaDoc API documentation for the
<code>java.text.MessageFormat</code> class for more advanced uses of the
parameter replacement mechanism.</p>
<h5>Developing Your Own MessageResources Implementation</h5>
<p>In the above example, we were using the default
<code>MessageResources</code> implementation supplied by Struts, which uses
property files to store the message strings. It is also possible to create
customized mechanisms to retrieve messages (such as loading them on demand
from a database). The steps required are as follows:</p>
<ul>
<li>Create a customized subclass of
<code>org.apache.struts.util.MessageResources</code> that implements
message lookup operations as you require.</li>
<li>Create a customized subclass of
<code>org.apache.struts.util.MessageResourcesFactory</code> that will
create an instance of your custom <code>MessageResources</code> class
when the <code>createResources</code> method is called. Note that the
"config" argument to this method can be used to select families of
messages in any manner appropriate to your needs - you are not required
to emulate the "fully qualified Java class name" approach that is used
by the standard <code>PropertyMessageResourcesFactory</code> class.</li>
<li>Tell the <code>MessageResourcesFactory</code> class the name of the
customized <code>MessageResourcesFactory</code> implementation to use
when creating new factory instances.</li>
<li>Create a new factory instance.</li>
<li>Ask the new factory instance to create a <code>MessageResources</code>
instance for you.</li>
</ul>
<p>A code example that illustrates this technique is:</p>
<pre>
MessageResourcesFactory.setFactoryClass("com.mycompany.mypkg.MyFactory");
MessageResourcesFactory factory = MessageResourcesFactory.createFactory();
MessageResources resources =
factory.createResources("configuration information");
</pre>
<p>Once you have created your custom MessageResources instance, you utilize it
to access message strings (with or without parameter replacement objects),
exactly as we illustrated with the standard implementation in the previous
section.</p>
<h5>Using MessageResources With Struts</h5>
<p>If your application uses the Struts controller servlet, you can optionally
configure Struts to load an application-specific message resources instance for
you, and make it available as a servlet context attribute (in JSP terms, an
application-scope bean). This mechanism is managed by setting the following
servlet initialization parameters in the web application deployment descriptor:
</p>
<ul>
<li><strong>application</strong> - The configuration string that will be
passed to the <code>createResources()</code> method of the message
resources factory, in order to identify the family of resources to be
supported. If you use the standard message resources factory, this must
be the base fully qualified name of the property resources files used
to contain these messages, as illustrated above.</li>
<li><strong>factory</strong> - Fully qualified Java class name of the
<code>MessageResourcesFactory</code> to be used. By default, the standard
implementation provided by Struts
(<code>org.apache.struts.util.PropertyMessageResourcesFactory</code>)
will be used.</li>
</ul>
<p>Struts provides several JSP custom tags that assume the existence of a
<code>java.util.Locale</code> attribute in the user's session, under the key
named by the constant string value of <code>Action.LOCALE_KEY</code>. Your own
application logic can set this attribute at any time, or you can ask Struts to
set it automatically (if not already set) based on the
<code>Accept-Language</code> HTTP header included with the request. There are
two mechanisms by which you request Struts to perform this service:</p>
<ul>
<li>To have this service performed on every request submitted to the controller
servlet, set the servlet initialization parameter <code>locale</code> to
the value <code>true</code> in the application deployment descriptor.</li>
<li>To have this service performed by a JSP page when it is accessed directly
by a user, utilize a <code><form:html ... locale="true" ... /></code>
tag at the top of each page.</li>
</ul>
<P>
<P>
<HR>
<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-use.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../org/apache/struts/upload/package-summary.html"><B>PREV PACKAGE</B></A>
<A HREF="../../../../org/apache/struts/validator/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html" TARGET="_top"><B>FRAMES</B></A>
<A HREF="package-summary.html" TARGET="_top"><B>NO FRAMES</B></A>
<SCRIPT>
<!--
if(window==top) {
document.writeln('<A HREF="../../../../allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>
Copyright 2000-2003 - Apache Software Foundation
</BODY>
</HTML>
|