Sturts中的常見(jiàn)異常
Sturts 中的常見(jiàn)異常:
1?
異常
?javax.servlet.jsp.JspException:?Cannot?retrieve?mapping?for?action?/Login?
(
/Login
是你的
action
名字)
?
可能原因
:action
沒(méi)有再
struts-config.xml?
中定義,或沒(méi)有找到匹配的
action
,例如在
JSP
文件中使用
?<HTML:FORM&NBSP;ACTION="LOGIN.DO".
將表單提交給
LOGIN.DO
處理
:
如果出現(xiàn)上述異常,請(qǐng)查看
struts-config.xml
中的定義部分,有時(shí)可能是打錯(cuò)了字符或者是某些不符合規(guī)則,可以使用
struts?console
工具來(lái)檢查。
?
2?
異常
?org.apache.jasper.JasperException:?Cannot?retrieve?definition?for?form?bean?null?
?
可能原因
:??
這個(gè)異常是因?yàn)?/span>
Struts
根據(jù)
struts-config.xml
中的
mapping
沒(méi)有找到
action
期望的
form?bean
。大部分的情況可能是因?yàn)樵?/span>
form-bean
中設(shè)置的
name
屬性和
action
中設(shè)置的
name
屬性不匹配所致。換句話(huà)說(shuō),
action
和
form
都應(yīng)該各自有一個(gè)
name
屬性,并且要精確匹配,包括大小寫(xiě)。這個(gè)錯(cuò)誤當(dāng)沒(méi)有
name
屬性和
action
關(guān)聯(lián)時(shí)也會(huì)發(fā)生,如果沒(méi)有在
action
中指定
name
屬性,那么就沒(méi)有
name
屬性和
action
相關(guān)聯(lián)。當(dāng)然當(dāng)
action
制作某些控制時(shí),譬如根據(jù)參數(shù)值跳轉(zhuǎn)到相應(yīng)的
jsp
頁(yè)面,而不是處理表單數(shù)據(jù),這是就不用
name
屬性,這也是
action
的使用方法之一。
3?
異常
?No?action?instance?for?path?/xxxx?could?be?created?
?
可能原因
?
?
特別提示:因?yàn)橛泻芏嘀星闆r會(huì)導(dǎo)致這個(gè)錯(cuò)誤的發(fā)生,所以推薦大家調(diào)高你的
web
服務(wù)器的日志
/
調(diào)試級(jí)別,這樣可以從更多的信息中看到潛在的、在試圖創(chuàng)建
action
類(lèi)時(shí)發(fā)生的錯(cuò)誤,這個(gè)
action
類(lèi)你已經(jīng)在
struts-config.xml
中設(shè)置了關(guān)聯(lián)(即添加了標(biāo)簽)。
?
?
在
struts-config.xml
中通過(guò)
action
標(biāo)簽的
class
屬性指定的
action
類(lèi)不能被找到有很多種原因,例如:
?
定位編譯后的
.class
文件失敗。
Failure?to?place?compiled?.class?file?for?the?action?in?the?classpath?(
在
web
開(kāi)發(fā)中,
class
的的位置在
r?WEB-INF/classes
,所以你的
action?class
必須要在這個(gè)目錄下。例如你的
action
類(lèi)位于
WEB-INF/classes/action/Login.class,
那么在
struts-config.xml
中設(shè)置
action
的屬性
type
時(shí)就是
action.Login).?
拼寫(xiě)錯(cuò)誤,這個(gè)也時(shí)有發(fā)生,并且不易找到,特別注意第一個(gè)字母的大小寫(xiě)和包的名稱(chēng)。
?
?
在
struts-config.xml
中指定的
action
類(lèi)沒(méi)有繼承自
Stuts
的
Action
類(lèi),或者你自定義的
Action
類(lèi)沒(méi)有繼承自
Struts
提供的
Action
類(lèi)。
?
你的
action
類(lèi)必須繼承自
Struts
提供的
Action
類(lèi)。
?
?
你的
classpath
的問(wèn)題。例如
web?server
沒(méi)有發(fā)現(xiàn)你的資源文件,資源文件必須在
WEB-INF/classes/
目錄下。
?
?
4
異
????????????????????????????????????????????????????????????????????????????????????????????????????????
常
?javax.servlet.jsp.JspException:?No?getter?method?for?property?username?of?bean?org.apache.struts.taglib.html.BEAN?
?
可能原因
?
?
沒(méi)有位
form?bean
中的某個(gè)變量定義
getter?
方法
?
?
這個(gè)錯(cuò)誤主要發(fā)生在表單提交的
FormBean
中,用
struts
標(biāo)記
<HTML:TEXT&NBSP;PROPERTY=”USERNAME”>
時(shí),在
FormBean
中必須有一個(gè)
getUsername()
方法。注意字母“
U
”。
?
5?Exception??javax.servlet.jsp.JspException:?Cannot?find?ActionMappings?or?ActionFormBeans?collection?
?
可能原因
?
?
不是標(biāo)識(shí)
Struts?actionServlet
的標(biāo)記就是映射
.do
擴(kuò)展名的標(biāo)記或者兩者都沒(méi)有在
web.xml
中聲明。
?
?
在
struts-config.xml
中的打字或者拼寫(xiě)錯(cuò)誤也可導(dǎo)致這個(gè)異常的發(fā)生。例如缺少一個(gè)標(biāo)記的關(guān)閉符號(hào)
/>
。最好使用
struts?console
工具檢查一下。
?
?
另外,
load-on-startup
必須在
web.xml
中聲明,這要么是一個(gè)空標(biāo)記,要么指定一個(gè)數(shù)值,這個(gè)數(shù)值用來(lái)表
servlet
運(yùn)行的優(yōu)先級(jí),數(shù)值越大優(yōu)先級(jí)越低。
?
?
還有一個(gè)和使用
load-on-startup
有關(guān)的是使用
Struts
預(yù)編譯
JSP
文件時(shí)也可能導(dǎo)致這個(gè)異常。
?
6?Exception?
?javax.servlet.jsp.JspException:?Cannot?find?bean?org.apache.struts.taglib.html.BEAN?in?any?scope?
?Probable?Causes?
?
試圖在
Struts
的
form
標(biāo)記外使用
form
的子元素。這常常發(fā)生在你在后面使用
Struts
的
html
標(biāo)記。
另外要注意可能你不經(jīng)意使用的無(wú)主體的標(biāo)記,如
<HTML:FORM&NBSP;…&NBSP; />
,這樣
web?
服務(wù)器解析時(shí)就當(dāng)作一個(gè)無(wú)主體的標(biāo)記,隨后使用的所有標(biāo)記都被認(rèn)為是在這個(gè)標(biāo)記之外的,如又使用了
<HTML:TEXT&NBSP;PROPERTY=”ID”>
還有就是在使用
taglib
引入
HTML
標(biāo)記庫(kù)時(shí),你使用的
prefix
的值不是
html
。
posted on 2006-07-17 17:02 謝瑋 閱讀(335) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 流行框架 、Web