<!DOCTYPE tiles-definitions PUBLIC "-
"http:>
<tiles-definitions>
5---:struts2中不支持EL表達(dá)式 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中設(shè)置String aContentType,String aFileName;(此兩個(gè)其實(shí)無所謂,關(guān)鍵是SET方法)
setA(File file)(){}; setAContentType(String s){};setAFileName(String name){} 即格式如下:setXContentType() setXFileName().X代表你給FILE取的NAME名字
必須和它相同,固定格式
7---嚴(yán)重: 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
嚴(yán)重: 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]
原因:上傳文件大小超過預(yù)定大小,可以在struts.properties配置文件中設(shè)置struts.multipart.maxSize=XXX(XXX為文件大?。?/pre>
8---配置了文件類型限制后,當(dāng)傳錯(cuò)誤類型可以攔截不讓用戶上傳該文件,可是跳轉(zhuǎn)的頁面卻沒有跳轉(zhuǎn)到input配置的錯(cuò)誤頁面,而是返回
到了success正確頁面。
嚴(yán)重: Content-Type not allowed: filedata "upload__5b01657_11a329d4dcf__8000_00000000.tmp" text/plain
《我的打印輸出DEBUG語句內(nèi)容: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攔截器后改錯(cuò)誤消失。
9---struts.properties中全局配置文件大小,再使用默認(rèn)FileUploadInterceptor攔截器時(shí)候能實(shí)現(xiàn)攔截的功能但是后臺(tái)出現(xiàn)異常。
嚴(yán)重: 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攔截器設(shè)置大小和文件類型限制,可消除異常。
10---多文件上傳中,其中一個(gè)傳被限制的文件如限制aplication/msword(即.doc)文件,允許傳文本文件。然而當(dāng)夾雜在一起傳的時(shí)候,后臺(tái)能截獲類型錯(cuò)誤不可傳信息,但是
實(shí)際卻還是上傳成功。
嚴(yán)重: 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--文件上傳異常,不能創(chuàng)建File文件
Cannot create type class java.io.File from value C:\Documents and Settings\admin\桌面\OrderReporterServiceImp.java - [unknown location]
原因:忘記了在form表單里將enctype設(shè)置成文件上傳格式:enctype="multipart/form-data"
12--當(dāng)使用限制文件類型和大小的時(shí)候拋出空指針異常
java.lang.NullPointerException
demo.struts2.action.ValidatFileUploadAction.execute(ValidatFileUploadAction.java:71)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
原因:在ACTION中配置了fileUpload攔截器后忘記了配置默認(rèn)攔截器:defautlStack。注意當(dāng)ACTION中配置自己的攔截器后需要顯示配置默認(rèn)
攔截器defaultStack
13--在國際化時(shí)候拋空指針異常:
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 配置文件注意事項(xiàng):
1. 別忘記了繼承struts-default默認(rèn)配置包
2.如果配置命名空間,一定要以"/"開始,例如:namespace="/test"
3.每個(gè)模塊struts action配置文件中都可以配置全局result,global-result 經(jīng)測試不會(huì)沖突,STRTUS會(huì)智能尋找該Action請求的
模塊STRUTS ACTION配置包
警告: No configuration found for the specified action: 'ShowMessage' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
解決方法:
經(jīng)過測試發(fā)現(xiàn),是沒有正確使用tag的原因,這種情況下,正確的寫法應(yīng)該是,<s:form name="login" method="post" action="login" >
您是否添加了action這個(gè)呢?