天天看點

Struts常見錯誤及原因

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 

錯誤資訊 javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login 

可能原因 

lNo action defined in struts-config.xml to match that specified in the JSP's  <html:form action="Login.do". 

相關連結 

No action instance for path /xxxx could be created 

錯誤資訊 No action instance for path /xxxx could be created 

lSpecial 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. 

lYour 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). ·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. 

lAction 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. 

lProblem in your classpath, such as web server not being able to find ApplicationResources.properties files in the WEB-INF/classes/ directory or specified subdirectory. 

lProblem in struts-config.xml file with action mapping. 

lProblem with data-sources.xml file. 

lApplication's Action classes does not extend Struts-provided Action class· 

lPackage 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/[email protected]/msg65874.html · 

lAction 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 

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

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

lThis 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 property attribute, but that case will be different and is based on JavaBean 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." 

lCase can trip up the matching between get method's name and name specified in Struts taghttp://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=58&t=000163 

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

錯誤資訊 javax.servlet.jsp.JspException: Exception creating bean of class org.apache.struts.action.Actionform: {1} 

lInstantiating Struts-provided Actionform class directly instead of instantiating a class derived off Actionform. This might occur implicitly if you specify that a form-bean is this Struts Actionform class rather than specifying a child of this class for the form-bean. 

lNot associating an Actionform-descended class with an action can also lead to this error. 

Cannot find ActionMappings or ActionformBeans collection 

錯誤資訊 javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionformBeans collection 

lEither 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. 

lTypos 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 effect. 

lAnother 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. 

NullPointerException at ... RequestUtils.forwardURL 

錯誤資訊 java.lang.NullPointerException at org.apache.struts.util.RequestUtils.forwardURL (RequestUtils.java:1223) 

lMissing path attribute in the forward subelement of the action element in struts-config.xml 

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 in any scope 

lTrying to use Struts form subelement tags outside of the Struts' form tag. 

lUsing form subelements outside of a form tag http://forum.java.sun.com/thread.jsp?thread=337537&forum=4&message=1384153   

Missing message for key xx.xx.xx 

錯誤資訊 javax.servlet.jsp.JspException: Missing message for key xx.xx.xx 

lThe key-value pair with specified key is not in ApplicationResources.properties file 

lApplicationResources.properties file not in classpath (not in WEB-INF/classes directory in specified location) 

相關連結   

Cannot find message resources under key org.apache.struts.action.MESSAGE 

錯誤資訊 Cannot find message resources under key org.apache.struts.action.MESSAGE 

lExplicitly trying to use message resources that are not available (such as ApplicationResources.properties not available 

lImplicitly trying to use message resources that are not available (such as using empty html:options tag instead of specifying the options in its body -- this assumes options are specified in ApplicationResources.properties file) 

lXML parser issues -- too many, too few, incorrect/incompatible versions對此問題解決方案如下: 

如:ApplicationResources.properties放在classes/book的檔案下,就可以設如下: 

</action-mappings> 

<message-resources parameter="book/ApplicationResources"/> 

</struts-config> 

在web.xml中 

<init-param> 

<param-name>application</param-name> 

<param-value>ApplicationResources</param-value> 

</init-param> 

通過上述方法,我解決了問題! 

lXML Parser Issues http://www.mail-archive.com/[email protected]/msg15779.html 

No input attribute for mapping path /loginAction 

錯誤資訊 No input attribute for mapping path /xxxxAction 

lNo 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 validate attribute is set to false or because the validation method in the 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. 

Strange Output Characters (頁面亂碼) 

錯誤資訊 Strange and seemingly random characters in HTML and on screen, but not in original JSP or servlet. 

lRegular HTML form tags intermixed incorrectly with Struts html:form tags. 

HTML标簽與Struts标簽不正确的混合使用 

lEncoding style used does not support characters used in page. 

使用了JSP頁面不支援的編碼 

"Document contained no data" or no data rendered on page (空白頁面) 

錯誤資訊 

l"Document contained no data" in Netscape (在Netscape中顯示“檔案中無資料”) 

lNo data rendered (completely empty) page in Microsoft Internet Explorer(在IE中為空白頁面,無任何顯示資訊) 

lEmploying 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 backwards compatible and supports the perform() method. However, if 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. 

l用Struts1.1寫的應用在struts1.0環境中運作時,可能出現此問題。 

其它錯誤資訊 

編譯JSP檔案時出現錯誤: 

java.lang.NullPointerException 

error:org.apache.jasper.JasperException: Error compiling \JSPs\security\appUserCreate.jsp 

可能原因: 

JSP頁面中的Struts标記有文法錯誤。 

例如:<bean:message key=”button.submit”> 錯誤原因:右邊的括号前缺少斜杠“/” 

正确的為:<bean:message key=”button.submit”/> 

不同語言資源檔案中的Key不比對

本文轉自左正部落格園部落格,原文連結:http://www.cnblogs.com/soundcode/archive/2010/12/20/1911933.html,如需轉載請自行聯系原作者