<!DOCTYPE tiles-definitions PUBLIC "-
"http:>
<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配置包
警告: No configuration found for the specified action: 'ShowMessage' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
解決方法:
經過測試發現,是沒有正確使用tag的原因,這種情況下,正確的寫法應該是,<s:form name="login" method="post" action="login" >
您是否添加了action這個呢?