Common Errors in Struts

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 7

This page was copied from

http://www.geocities.com/Colosseum/Field/7217/SW/struts/errors.html

Common Struts Errors and Causes

This page contains errors and exceptions commonly encountered during web application
development using Struts. Along with the exception or error messages themselves, potential
causes of these errors are often listed along with links to additional resources.

To find the error you're looking for, use your browser's Find or Search capability and input a few
words that you are seeing in your error message.

Cannot retrieve mapping for action


Exception javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login

Probable No action defined in struts-config.xml to match that specified in the


Cause JSP's <html:form action="Login.do".
Related
Links

Cannot retrieve definition for form bean null


org.apache.jasper.JasperException: Cannot retrieve definition for form bean
Exception
null
This exception typically occurs because Struts cannot find the form bean it
expects for a specific action according to the mapping in the struts-
config.xml file. Most often, this is probably because the name given to the
form in the name attribute of the form-bean element does not match the
name attribute of the associated action's action element. In other words, the
Probable action and form should each have a name attribute that matches exactly,
Cause including case. It has been reported that this error has been seen when no
name attribute is associated with the action. If there is no name attribute in
an action element, no form is associated with the action. Others have
reported this error as merely a symptom of something completely unrelated
(all too common), but the mismatch of name attributes in the form-bean and
action elements in the struts-config.xml file is the usual culprit.

No action instance for path /xxxx could be created


Exception No action instance for path /xxxx could be created
Probable Special Note: Because so many different things can cause this error, it is
recommended that you turn your error logging/debugging levels on your web
server to a high level of verbosity to see the underlying problems in trying to
instantiate the action class you have written and associated with the specified
action xxxx through an action mapping in the struts-config.xml file.
Your Action class specified in the struts-config.xml file under the class
attribute of the action mapping for action xxxx cannot be found for a variety of
reasons, including (but not limited to):

• Failure to place compiled .class file for the action in the classpath
(needs to be under WEB-INF/classes with the appropriate directory
structure underneath this that matches the package your Action class
belongs to).

Causes • Package spelling or hierarchy specified in your action class itself (using
the package keyword) does not match the spelling or complete package
hierachy specified for your action class in the class attribute of the
action in struts-config.xml.
Action class specified in the /xxxx action mapping in the struts-config.xml
file (class attribute) does not extend (directly or indirectly) from the Action
class. In other words, your custom Action class does not extend off the Struts-
provided Action class or off of another class that eventually extends the Action
class (such as DispatchAction.
Problem in your classpath, such as web server not being able to find
ApplicationResources.properties files in the WEB-INF/classes/ directory
or specified subdirectory.
Problem in struts-config.xml file with action mapping.
Problem with data-sources.xml file.
• Application's Action classes does not extend Struts-provided Action
class
• Package hierarchy/directory structure specified in struts-config.xml
file differs from that hierarchy specified in the actual action class's file
using the package keyword.
http://www.mail-archive.com/struts-
Relevant
user@jakarta.apache.org/msg65874.html
Links
• Action Mapping mistake in struts-config.xml:
http://www.manning.com/ao/readforum.html?
forum=siaao&readthread=177

• data-sources.xml file?:
http://www.caucho.com/quercus/faq/section.xtp?section_id=30

No getter method for property XXXX of bean org.apache.struts.taglib.html.BEAN


Exception javax.servlet.jsp.JspException: No getter method for property username of
bean org.apache.struts.taglib.html.BEAN

No getXXXX() method defined for form field with name XXXX


This can happen if the JSP/Struts developer forgets that the name of the get
method will have the same spelling as the value supplied in the Struts tag's
Probable property attribute, but that case will be different and is based on JavaBean
Causes specification rules. For example, my form class should have a getUsername
method if my Struts form-related tag has username as the value for its
property attribute. Note the difference in case marked with emphasis on
the letter "U."
• Case can trip up the matching between get method's name and name
Related specified in Struts tag
Links http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?
ubb=get_topic&f=58&t=000163

java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm
Error java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm
This error occurs typically when the specified Java .class file cannot be located in the
classpath. If this occurs at runtime of a web application (error shows on browser rather
than a rendered page), this typically means that specified class is not in the web server's
classpath (made up primarily of /WEB-INF/classes and /WEB-INF/lib contents).
Note that the NoClassDefFoundError in general typically indicates lack of the
specified class in the relevant classpath. In this particular case the missing class would
be ActionForm.class
This error is sometimes seen when one or more ActionForm.class instances are
Probable actually in the classpath. This most often occurs when ActionForm.class is made
Causes available correctly by placing struts.jar in the /WEB-INF/lib directory. When this
library has been correctly placed and it is verified that ActionForm.class actually is
present in the struts.jar file, the problem is either that more than one copy of
ActionForm.class is in the classpath or (more likely) that duplicate versions of class
files other than ActionForm are in the same classpath, causing confusion. This is
especially true if a class that extends ActionForm is made available twice, such as in an
.ear file that encompasses a .war file as well as in the .war file's own classpath
(/WEB-INF/classes). This problem can be resolved by guaranteeing that there are no
redundant classes, especially those related to Struts (directly from Struts or extensions
of Struts), in the web application's view.
Related • EJB and Web Shared Links:
Links http://forum.java.sun.com/thread.jsp?
forum=26&thread=413060&tstart=0&trange=15

• Keep Action and ActionForm (and their children) as non-overlapping unit(s)


of an application
http://www.mail-archive.com/struts-user@jakarta.apache.org/msg47466.html
http://www.mail-archive.com/struts-user@jakarta.apache.org/msg47467.html

Exception creating bean of class org.apache.struts.action.ActionForm: {1}


javax.servlet.jsp.JspException: Exception creating bean of class
Exception
org.apache.struts.action.ActionForm: {1}

Instantiating Struts-provided ActionForm class directly instead of


instantiating a class derived off ActionForm. This might occur implicitly if
Probable you specify that a form-bean is this Struts ActionForm class rather than
Causes specifying a child of this class for the form-bean.
Not associating an ActionForm-descended class with an action can also
lead to this error.
Related
Links

Cannot find ActionMappings or ActionFormBeans collection


javax.servlet.jsp.JspException: Cannot find ActionMappings or
Exception
ActionFormBeans collection

Either the <servlet> tags for the Struts action servlet or the <servlet-
mapping> tags for the .do extension mapping or both not present in the
web.xml file. I saw a case where the web.xml file had no elements other
than the root element and so this error was occurring.
Typos or spelling errors in the struts-config.xml can lead to this error
message. For example, missing a slash ("/") on a closing tag can have this
Probable effect.
Causes
Another element that must be present in the web.xml file is the load-on-
startup element. This can be either an empty tag or can have an integer
specified that indicates the priority of executing the associated servlet. The
higher the number in the load-on-startup tags, the lower its priority.
Another possibility, related to need to use load-on-startup tag, is that
precompiling JSPs using Struts can lead to this message as well.
• Explicitly Define <load-on-startup>
Related http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?
Links ubb=get_topic&f=50&t=001055
http://threebit.net/tutorials/ejb/general/
NullPointerException at ... RequestUtils.forwardURL
java.lang.NullPointerException at
Exception
org.apache.struts.util.RequestUtils.forwardURL(RequestUtils.java:1223)

Probable Missing path attribute in the forward subelement of the action element in
Causes struts-config.xml
Related
Links

Cannot find bean org.apache.struts.taglib.html.BEAN in any scope


javax.servlet.jsp.JspException: Cannot find bean org.apache.struts.taglib.html.BEAN
Exception
in any scope

Trying to use Struts form subelement tags outside of the Struts' form tag. Note that this
might be because you are using the Struts html tags after the closing </html:form>
tag.

Note that if you accidentaly make your opening html:form tag a no-body tag (you put
a closing / at the end so that it looks something like <html:form ... />), this may be
Probable
treated by your web server's parser as a no-body tag and everything after that tag you
Causes
meant to be an opening tag will be outside of the form tag by default.

Note your prefix may be different than html, but most people seem to use that as their
prefix for the Struts HTML tags library.

• Using form subelements outside of a form tag


Related
http://forum.java.sun.com/thread.jsp?
Links
thread=337537&forum=4&message=1384153

Missing message for key xx.xx.xx


Exception javax.servlet.jsp.JspException: Missing message for key xx.xx.xx
The key-value pair with specified key is not in
Probable ApplicationResources.properties file
Causes ApplicationResources.properties file not in classpath (not in WEB-
INF/classes directory in specified location)
Related
Links
Cannot find message resources under key org.apache.struts.action.MESSAGE
Cannot find message resources under key
Exception
org.apache.struts.action.MESSAGE
Explicitly trying to use message resources that are not available (such as
ApplicationResources.properties not available
Implicitly trying to use message resources that are not available (such as
Probable
using empty html:options tag instead of specifying the options in its body
Causes
-- this assumes options are specified in
ApplicationResources.properties file)
XML parser issues -- too many, too few, incorrect/incompatible versions
• Provide Struts with Resource Bundle
http://threebit.net/tutorials/ejb/general/
Related
Links • XML Parser Issues
http://www.mail-archive.com/struts-
user@jakarta.apache.org/msg15779.html

No input attribute for mapping path /loginAction


Error No input attribute for mapping path /xxxxAction
No input attribute in action mapping in struts-config.xml file for the
action with the name specified in the error message. An input attribute is
not required if form validation is not performed (either because the
Probable
validate attribute is set to false or because the validation method in the
Cause
relevant form class is not implemented. The input attribute specifies the
page leading to this action because that page is used to display error
messages from the form validation.
Related
Links

Strange Output Characters


Strange and seemingly random characters in HTML and on screen, but
Error
not in original JSP or servlet.
Regular HTML form tags intermixed incorrectly with Struts html:form
Probable
tags.
Causes
Encoding style used does not support characters used in page.
Related Links
"Document contained no data" or no data rendered on page
"Document contained no data" in Netscape
Error
No data rendered (completely empty) page in Microsoft Internet Explorer
Employing a descendent of the Action class that does not implement the
perform() method while using the Struts 1.0 libraries. Struts 1.1 Action
child classes started using execute() rather than perform(), but is
Probable backwards compatible and supports the perform() method. However, if
Cause you write an Action-descended class for Struts 1.1 with an execute()
method and try to run it in Struts 1.0, you will get this "Document contained
no data" error message in Netscape or a completely empty (no HTML
whatsoever) page rendered in Microsoft Internet Explorer.
Related
Links

Related Resources
• JSP Best Practices
• More JSP Best Practices

You might also like