公告:
[论坛活动] Bambook程序达人大赛,打造个性电子书,赢取60万大奖[意见反馈][官方博客] 完全解决struts启动时报错:The content of element type "struts-config" must match "(data-sources?,form-beans?,global-exceptions?,global-forwards?,action-mappings?,controller?,message-resources* 收藏
最近新建一个项目,发现tomcat启动的时候时,控制台一直报告异常信息:
10 12 22 09:49:016,306 ERROR Digester:1463 - Parse Error at line 21 column 17: The content of element type "struts-config" must match "(data-sources?,form-beans?,global-exceptions?,global-forwards?,action-mappings?,controller?,message-resources*,plug-in*)".
org.xml.sax.SAXParseException: The content of element type "struts-config" must match "(data-sources?,form-beans?,global-exceptions?,global-forwards?,action-mappings?,controller?,message-resources*,plug-in*)".
。。。。。。
虽然这不影响系统的运行,但看到每次启动就报这一堆异常信息,心里也很不爽。
在网上搜索了下解决办法,但是大部分都是只有提问,没有结果,或者就是解决办法不管用。于是,下决心自己去解决。认真查看异常信息,发现如下重要信息:
at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:738)
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:687)
于是,找到对应源代码:ActionServlet中的方法initConfigDigester()
view plaincopy to clipboardprint?
01.if (configDigester != null) {
02. return (configDigester);
03. }
04.
05. // Create a new Digester instance with standard capabilities
06. configDigester = new Digester();
07. configDigester.setNamespaceAware(true);
08. configDigester.setValidating(this.isValidating());//注意此处!!!
09. configDigester.setUseContextClassLoader(true);
10. configDigester.addRuleSet(new ConfigRuleSet());
11.
12. for (int i = 0; i < registrations.length; i += 2) {
13. URL url = this.getClass().getResource(registrations[i + 1]);
14.
15. if (url != null) {
16. configDigester.register(registrations[i], url.toString());
17. }
18. }
19.
20. this.addRuleSets();
if (configDigester != null) {
return (configDigester);
}
// Create a new Digester instance with standard capabilities
configDigester = new Digester();
configDigester.setNamespaceAware(true);
configDigester.setValidating(this.isValidating());//注意此处!!!
configDigester.setUseContextClassLoader(true);
configDigester.addRuleSet(new ConfigRuleSet());
for (int i = 0; i < registrations.length; i += 2) {
URL url = this.getClass().getResource(registrations[i + 1]);
if (url != null) {
configDigester.register(registrations[i], url.toString());
}
}
this.addRuleSets();
注意标注【注意的代码行】,其调用的代码如下:
view plaincopy to clipboardprint?
01.private boolean isValidating() {
02. boolean validating = true;
03. String value = getServletConfig().getInitParameter("validating");
04.
05. if ("false".equalsIgnoreCase(value) || "no".equalsIgnoreCase(value)
06. || "n".equalsIgnoreCase(value) || "0".equalsIgnoreCase(value)) {
07. validating = false;
08. }
09.
10. return validating;
11. }
private boolean isValidating() {
boolean validating = true;
String value = getServletConfig().getInitParameter("validating");
if ("false".equalsIgnoreCase(value) || "no".equalsIgnoreCase(value)
|| "n".equalsIgnoreCase(value) || "0".equalsIgnoreCase(value)) {
validating = false;
}
return validating;
}
分析到此处,大家相信都知道怎么回事了。赶紧前往web.xml配置org.apache.struts.action.ActionServlet的地方加上
view plaincopy to clipboardprint?
01.<init-param>
02. <param-name>validating</param-name>
03. <param-value>false</param-value>
04. </init-param>
<init-param>
<param-name>validating</param-name>
<param-value>false</param-value>
</init-param>
启动服务器,果然搞定!
分享到:
相关推荐
然而,如同任何复杂的框架一样,Struts2在开发和部署过程中可能会遇到一些常见错误。以下是一些典型的问题及相应的解决方案: 1. **异常启动过滤器Struts2:No mapping found for dependency** 这个错误通常是因为...
如果在应用启动时遇到`Servlet Initialization Exception`,可能是由于Struts配置文件格式错误或缺失,或者在struts-config.xml中引用了不存在的类。仔细检查配置文件,确保所有元素和属性都符合规范。 8. **...
### Struts2错误集合解析与解决方案 #### 一、类型转换异常:`java.lang.ClassCastException` **问题描述**: 在尝试从session中获取一个整型数值时,由于类型不匹配导致了`ClassCastException`。 **代码示例**:...
这个异常通常发生在Web应用启动时,Struts框架初始化出现问题。检查ActionServlet的初始化参数是否正确,以及`struts-config.xml`配置文件是否存在语法错误或遗漏。 ### 10. ResourcesnotdefinedforValidator 当...
### Struts2错误集合知识点详解 #### 一、类型转换问题 在开发过程中,经常会遇到类型转换的问题。这里提到了几种常见的类型转换方法。 1. **`java.lang.ClassCastException`:** 当尝试将一个对象强制转换为另一个...
4. 错误处理和国际化:Struts2提供了错误处理机制和资源文件支持,方便进行多语言开发。 在lib目录下,通常会包含Struts2框架所需的多个jar文件,如struts2-core.jar、struts2-convention-plugin.jar、struts2-dojo...
在学习Struts的过程中,新手可能会遇到各种错误,本文将针对其中一种常见问题进行详细解答,即"JSF运行时出现javax.servlet.jsp.JspException: Cannot find FacesContext"的处理方法。 这个问题通常是由于在JSF应用...
8. **错误排查**:如果遇到问题,检查服务器日志(通常在`logs`目录下)以获取错误信息。此外,确保Struts2的JAR文件和所有依赖都在`lib`目录下,并已被正确引入。 9. **测试**:通过访问不同的URL来测试Action是否...
在描述中提到的问题是关于Tomcat服务器在启动时遇到与Struts2相关的严重错误。这通常意味着应用的配置或者Struts2的核心组件出现了问题。下面将详细分析可能出现的问题以及解决策略。 首先,当我们在启动Tomcat时...
在`web.xml`中配置Struts2过滤器是启动Struts2框架的关键步骤。通过定义`FilterDispatcher`,可以确保所有进入应用的HTTP请求都会经过Struts2框架的处理,进而实现对请求的拦截、解析和分发。 ```xml ...
例如,日志配置不完整可能导致Tomcat无法启动或运行错误。在这种情况下,需要检查是否导入了log4j相关的jar包,以支持Struts2的日志输出。如果出现找不到类的错误,那通常是因为缺少必要的依赖jar包。确保导入所有...
2. 配置与初始化:详细解释struts-config.xml和web.xml的配置,以及如何启动和调试Struts应用。 3. 表单处理:ActionForm的使用,以及表单验证的实现。 4. 控制流程:Action类的编写,转发和重定向的使用,以及结果...
最后,别忘了在web.xml中配置Struts2的前端控制器DispatcherServlet,以启动Struts2的拦截器链。 总的来说,"Struts2实现的注册"涵盖了以下几个核心知识点: 1. Struts2框架的基本使用,包括Action、ActionSupport...
3. **配置文件编辑器**:NetBeans Struts2插件内置了对`struts.xml`配置文件的特殊编辑器,提供语法高亮、错误检查以及自动格式化等功能,确保配置文件的正确性。 4. **调试支持**:插件集成了Struts2的调试工具,...
4. JSP页面:包括输入页面(用户输入数字)、结果显示页面(显示计算结果)以及可能的错误提示页面。 5. JavaBean:可能包含业务逻辑,如计算方法。 在开发过程中,开发者通常会使用Eclipse中的Struts插件来辅助...
1. **配置错误**:检查你的struts-config.xml或struts.properties文件,确认`struts.multipart.saveDir`的路径设置正确。路径应指向服务器上的一个实际存在的目录,且该目录应有适当的写权限。 2. **目录不存在**:...
Struts2和Hibernate是两种非常重要的Java开源框架,它们在企业级Web开发中扮演着核心角色。Struts2是一款强大的MVC(Model-View-Controller)框架,它为构建基于J2EE的Web应用程序提供了结构化的支持。而Hibernate则...
在这个“Struts驱动包”中,包含了Struts 1.2.9版本的必要组件,以及一个空项目,可以作为学习或快速启动新项目的基础。 1. **Struts框架核心组件**: - `struts-core.jar`:这是Struts框架的核心库,包含Action...
主要通过编辑web.xml文件添加Struts2核心过滤器的配置,这一步是启动Struts2框架所必需的。Struts2提供了灵活的配置方式,支持通过XML文件、注解以及Java代码进行配置。 在搭建一个基于Struts2的简单应用时,例如一...
6. **异常处理**:Struts2提供了一套完整的异常处理机制,可以捕获并控制应用程序中可能出现的异常,使开发者能够优雅地处理错误。 7. **国际化支持**:Struts2支持多语言环境,通过资源文件可以轻松实现应用程序的...