`

strut2常见异常的处理

阅读更多
转自天道酬勤的博客:http://tdcq.iteye.com/blog/364351

struts2 异常处理总结

struts2 异常处理总结

 

1---:java .lang.NoClassDefFoundError: org/apache/struts2/dojo/views/jsp/ui/HeadTag

解决办法:原因缺少了dojo的JAR包,引入即可:struts2-dojo-plugin-2.1.2.jar

(

The "head" tag renders required JavaScript code to configure Dojo and is required in order to use any of the tags included in the Dojo plugin.

--------------------

If you are planning to nest tags from the Dojo plugin, make sure you set parseContent="false", otherwise each request made by the inner tags will be performed twice. 

)

2---:Unable to load configuration. - bean - jar:file :/F:/Struts2/Struts2/WebRoot/WEB-INF/lib/struts2-core-       2.1.2.jar!/struts-default.xml:46:178

       Caused by: Unable to load bean: type :org.apache.struts2.dispatcher.multipart.MultiPartRequest class :org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest -       bean - jar:file :/F:/Struts2/Struts2/WebRoot/WEB-INF/lib/struts2-core-2.1.2.jar!/struts-default.xml:46:178

       Caused by: java .lang.NoClassDefFoundError: org/apache/commons/fileupload/RequestContext 
       解决办法:缺少JAR包,引入commons-fileupload-1.2.1.jar,commons-io -1.3.2.jar即可

 

3---:No tag "datetimepicker" defined in tag library imported with prefix "s"

       原因版本问题:缺少struts-dojo-plugin JAR包,以及HTML的,<HEAD></HEAD>中没有使用<s:head/>标签

         If you're using Struts 2.1.x you're probably missing the>  struts-dojo-plugin .  Michaël's reference below applies to Struts 2.1.xonly. In the lasts versions (since 2.0.9 I guess), all AJAX are in dojo> plugin.
> > So you need to include <%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
> > and <sx:head/>
> >( Temp1:
   <sx:datetimepicker name="picker" />
   Temp2:
   <sx:datetimepicker type ="time" name="picker" /><br/>
   Temp3:
   <sx:datetimepicker value="%{'2008-06-08'}" name="picker" />
   Temp4:
   <sx:datetimepicker value="date" name="picker" />)
> > and call  :<sx:datetimepicker .../>

 

4---:使用TILES框架      

    If you use the Tiles 2 plugin, check your tiles.xml file (s) to ensure they contain a DOCTYPE.

    <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"     "http://tiles.apache.org/dtds/tiles-config_2_0.dtd" >     <tiles-definitions>

5---:struts2中不支持EL表达式 Convert EL expressions to OGNL  

    Struts2.1 tags do not allow evaluation of JSP EL within their attributes.     Instead, Struts2 tags evaluate attribute values as OGNL. Allowing both     expression languages within the same attribute opens major security     vulnerabilities.

6---文件上传过程中取不到文件名和文件类型,即都取到NULL

    原因:如果页面中file 的name=“a”则我们ACTION中设置String aContentType,String aFileName;(此两个其实无所谓,关键是SET方法)

    setA(File file )(){}; setAContentType(String s){};setAFileName(String name){} 即格式如下:setXContentType() setXFileName().X代表你给FILE 取的NAME名字

    必须和它相同,固定格式

7---严重: Unable to parse request
    org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (8523356) exceeds the configured maximum (2097152)
     at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java :914)2008-5-27 17:46:51 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
    警告: Could not find property [struts.valueStack]
    2008-5-27 17:46:51 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error
    严重: the request was rejected because its size (8523356) exceeds the configured maximum (2097152)
    2008-5-27 17:46:51 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
    警告: Could not find property [org.apache.catalina.jsp_file]

 原因:上传文件大小超过预定大小,可以在struts.properties配置文件中设置struts.multipart.maxSize=XXX(XXX为文件大小)

 8---配置了文件类型限制后,当传错误类型可以拦截不让用户上传该文件,可是跳转的页面却没有跳转到input配置的错误页面,而是返回

    到了success正确页面。

    严重: Content-Type not allowed: filedata "upload__5b01657_11a329d4dcf__8000_00000000.tmp" text/plain
    《我的打印输出DEBUG语句内容:File :null  FlieName:null      type :null》即拦截类型成功了
    java .lang.NullPointerException
     at java .io .FileInputStream.<init>(FileInputStream.java :103)
     at com.study.web.util.FileUploadUtil.uploadFile(FileUploadUtil.java :36)
     at com.study.web.action.UploadFileAction.execute(UploadFileAction.java :58)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)。。。

    2008-5-29 10:59:07 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
    警告: Could not find property [org.apache.catalina.jsp_file]
    2008-5-29 10:59:07 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
    警告: Could not find property [struts]
    2008-5-29 10:59:07 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
    信息: Removing file filedata \tmp\upload__5b01657_11a329d4dcf__8000_00000000.tmp

     原因及解决办法:在该文件上传Action中只配置了FileUploadInterceptor后缺少配置了defaultStack拦截器.

    在ACTION中配置玩defaultStack拦截器后改错误消失。

9---struts.properties中全局配置文件大小,再使用默认FileUploadInterceptor拦截器时候能实现拦截的功能但是后台出现异常。

    严重: Unable to parse request
    org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (380) exceeds the configured maximum (10)
     at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java :914)

原因:未知。将全局配置中的限制大小去掉,再重新在ACTION中覆盖配置FileUploadInterceptor拦截器设置大小和文件类型限制,可消除异常。

10---多文件上传中,其中一个传被限制的文件如限制aplication/msword(即.doc)文件,允许传文本文件。然而当夹杂在一起传的时候,后台能截获类型错误不可传信息,但是

    实际却还是上传成功。

严重: Content-Type not allowed : filedata "upload_4d958287_11a33e76ab9__8000_00000007.tmp" application/msword 
file is :\tmp\upload_4d958287_11a33e76ab9__8000_00000006.tmp  fileName:project.txt  fileType:text/plain
file is :\tmp\upload_4d958287_11a33e76ab9__8000_00000007.tmp  fileName:application base.doc  fileType:application/msword
file is :\tmp\upload_4d958287_11a33e76ab9__8000_00000008.tmp  fileName:zhongqi-bug.txt  fileType:text/plain

原因:忘记了继承ActionSupport类。继承后异常消失。

11--文件上传异常,不能创建File 文件

     Cannot create type class java .io .File from value C:\Documents and Settings\admin\桌面\OrderReporterServiceImp.java - [unknown location]

    原因:忘记了在form表单里将enctype设置成文件上传格式: enctype="multipart/form-data" 

12--当使用限制文件类型和大小的时候抛出空指针异常

    java .lang.NullPointerException demo.struts2.action.ValidatFileUploadAction.execute(ValidatFileUploadAction.java :71) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     原因:在ACTION中配置了fileUpload拦截器后忘记了配置默认拦截器:defautlStack。注意当ACTION中配置自己的拦截器后需要显示配置默认 

        拦截器defaultStack

13--在国际化时候抛空指针异常:

     16:31:12,812 ERROR [jsp]:253 - Servlet.service() for servlet jsp threw exception
    java .lang.NullPointerException  at java .text.MessageFormat.applyPattern(MessageFormat.java :414)

     at java .text.MessageFormat.<init>(MessageFormat.java :350)
     at com.opensymphony.xwork2.DefaultTextProvider.getText(DefaultTextProvider.java :70)

 

     原因:忘记了在struts.xml中配置国际化常量,或者在struts.properties中配置全局国际化常量 struts.custom.i18n.resources=globeMessage

 

14-- struts action的配置文件加载失败:

    Unable to load configuration. - result - file :/D:/Java /apache-tomcat-5.5.20/webapps/mysts/WEB-INF/classes/test.xml:10:26

     Caused by: No result type specified for result named 'error', perhaps the parent package does not specify the result type ? - result - file :/D:/Java /apache-tomcat-5.5.20/webapps/mysts/WEB-INF/classes/test.xml:10:26
     at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildResults(XmlConfigurationProvider.java :609)

 

      原因:忘记了继承包struts-default

15-- struts action 配置文件注意事项:

     1. 别忘记了继承struts-default默认配置包

     2.如果配置命名空间,一定要以"/"开始,例如:namespace="/test"

     3.每个模块struts action配置文件中都可以配置全局result,global-result 经测试不会冲突,STRTUS会智能寻找该Action请求的

       模块STRUTS ACTION配置包


分享到:
评论

相关推荐

    struts常见异常及处理

    ### Struts 常见异常及处理 #### 1. javax.servlet.ServletException: Must specify type attribute if name is specified - **异常描述**:当在 JSP 页面中使用自定义标签时,如果标签中定义了 `name` 属性,则...

    struts2常见错误

    然而,如同任何复杂的框架一样,Struts2在开发和部署过程中可能会遇到一些常见错误。以下是一些典型的问题及相应的解决方案: 1. **异常启动过滤器Struts2:No mapping found for dependency** 这个错误通常是因为...

    Struts2 Struts2 超好的Struts2 pdf 文档

    9. **异常处理**:Struts2提供了全局和局部的异常处理机制,可以统一处理应用中的异常情况,提高代码的可维护性和用户体验。 10. **国际化(i18n)**:Struts2支持多语言环境,通过资源包(Properties文件)来实现...

    Struts2全部jar包

    9. **异常处理**:通过全局异常处理,Struts2可以统一处理未捕获的异常,避免错误信息直接暴露给用户。 10. **类型转换**:Struts2提供了类型转换机制,自动将请求参数转换为Action类的属性类型,简化开发工作。 ...

    Struts2主要Lib

    9. **异常处理**:Struts2提供了一套全面的异常处理机制,通过配置`&lt;global-exception-mappings&gt;`标签,可以定义全局的异常处理策略。 在"struts2lib"这个压缩包中,可能包含的文件有`struts2-core.jar`(核心库)...

    Struts2的视频学习代码

    10. **异常处理**:Struts2提供了全局的异常处理机制,通过`&lt;global-exception-mappings&gt;`标签定义异常映射,可以统一处理各类运行时异常。 "Struts2-part01"可能包含的是该系列学习的第一部分内容,可能涵盖了...

    尚硅谷_佟刚_Struts2

    12. **错误与异常处理**:Struts2提供了统一的错误处理机制,能够优雅地处理程序中的异常情况。 尚硅谷_佟刚_Struts2.pptx这份课件可能涵盖了以上知识点的详细讲解,通过学习,开发者不仅可以了解Struts2的基本用法...

    黑马程序员Struts2笔记

    本笔记主要涵盖了Struts2的基础知识,包括但不限于配置、Action、拦截器、结果类型以及异常处理等内容。 1. **Struts2框架简介** Struts2是Apache软件基金会的一个开源项目,它是Struts1的升级版,弥补了Struts1在...

    Struts2-API+Struts2中文帮助文档

    文档中还会讲解如何使用Struts2的异常处理机制,以及如何调试和解决常见的运行时问题。 总的来说,这个压缩包对于想深入理解并熟练掌握Struts2框架的开发者来说是宝贵的资源。通过API文档可以了解框架的底层机制,...

    当当网 Struts2

    7. **异常处理**:学习Struts2的异常处理机制,如何捕获和处理异常。 8. **实践应用**:尝试开发一个简单的Web应用,如图书管理系统,以此巩固所学知识。 9. **深入研究**:进一步学习Struts2的高级特性,如动态...

    struts2完整例子

    9. **异常处理**:Struts2提供了一套完善的异常处理机制,通过`&lt;global-exception-mappings&gt;`和`&lt;package&gt;`内的`&lt;exception-mapping&gt;`标签,可以定义全局或局部的异常处理策略。 10. ** strut2-helloworld 示例**:...

    Struts2实战(Struts2 In Action中文版)

    8. **异常处理**:理解Struts2的异常处理机制,如何自定义错误页面和全局异常处理器。 9. **集成其他技术**:如Spring、Hibernate等,实现业务层和服务层的松耦合。 10. **最佳实践与性能优化**:分享Struts2开发...

    struts2核心文件

    1. **Action类和ActionSupport**: Action是Struts2的核心组件,负责处理用户请求并执行业务逻辑。ActionSupport是Action的基类,提供了默认的行为,如错误处理和国际化支持。 2. **Interceptor(拦截器)**: 拦截器...

    struts2一些异常和如何搭struts2项目

    #### 异常处理 在开发Struts2项目的过程中,遇到各种异常是不可避免的。以下是一些常见的Struts2异常及其解决方法: ##### 1. **ActionNotFoundException** **异常说明:** 当Struts2无法找到对应的Action类时,会...

    struts2 的异常收集

    ### Struts2 异常收集与处理技巧 #### 数字格式异常解析 在Struts2框架的应用中,经常会出现各种类型的异常,其中一种常见...通过以上几种常见异常及其解决策略的学习,可以显著提高Struts2应用的稳定性和用户体验。

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    重写struts2文件上传处理类

    在Struts2框架中,文件上传是一个常见的功能,它允许用户通过表单提交包含文件的请求。`PerfMultiPartRequest`是Struts2中处理文件上传的核心类之一,主要负责解析请求中的多部分数据(multipart/form-data)。在这...

    struts2四天的学习笔记

    9. **异常处理**:Struts2允许定义全局和Action级别的异常处理策略,通过配置`&lt;global-exception-mappings&gt;`或`&lt;exception-mapping&gt;`元素来指定异常的处理方式。 10. **主题与皮肤**:Struts2允许定制视图展示的...

    Struts2 开发包

    9. **异常处理**:Struts2提供了一套完整的异常处理机制,允许开发者定义全局或Action级别的异常映射,以优雅地处理程序中的错误。 10. **国际化与本地化**:Struts2支持多语言环境,开发者可以通过资源包...

    struts2 PDF

    8. **错误处理和异常处理**:描述了Struts2如何优雅地处理错误和异常,以及如何自定义错误页面。 9. **AJAX支持**:Struts2提供了对AJAX的支持,使页面交互更加动态,提高用户体验。 10. **最佳实践**:分享了在...

Global site tag (gtag.js) - Google Analytics