
原因:只引入了struts自身的jar,看一看release中l(wèi)ib下,還有不少非struts的jar,可以猜想這些都是DispatchAction所需要的,而Action不需要(以前以為這些沒用)。不報(bào)錯(cuò)讓我很郁悶。
癥

原因:execute有兩個(gè)!!!HttpServletRequest vs ServletRequest,前者才是struts所使用的execute。
癥





但當(dāng)出現(xiàn)404錯(cuò)誤時(shí),并沒有顯示404.jsp這一頁,而是顯示browser提供的error report page
原因:在客戶端瀏覽器如IE的internet選項(xiàng)高級(jí)屬性中默認(rèn)使用“友好的http錯(cuò)誤信息”,這樣會(huì)造成你的服務(wù)器是輸出你所定義的錯(cuò)誤頁面,但到客戶端被IE這混蛋給覆蓋掉了。解決方案是你定義的錯(cuò)誤頁面的大小必須大于512bytes,就不會(huì)被客戶端設(shè)置所影響了。
癥

原因:
<class name="com.verican.base.model.CatalogPO" table="sys_catalog" mutable="false">設(shè)置成true即可。
(當(dāng)mutable=false,卻又執(zhí)行update操作時(shí),hibernate至少應(yīng)該提供警告消息告知一下才對(duì),可惜沒有,所以很難發(fā)現(xiàn))
癥

??????Javascript彈出窗口時(shí),如果用的是相對(duì)路徑,形如javascript:void(window.open('../../test.html')),不同的瀏覽器的處理不同(因?yàn)閖s是瀏覽器處理的東西)。
??????比如,不是部署在根目錄下時(shí)(根目錄下又建了一個(gè)目錄):在Firefox下,是以服務(wù)器為視角,則../../即可;而在IE下,則是以瀏覽器為視角,則需要多加一級(jí),如../../../。
????????????
解決:用絕對(duì)路徑 javascript:void(window.open('http://www.verican.com/test.html'));或者,用 <a target="_blank" href="../../test.html"> (因?yàn)檫@是服務(wù)器處理的東西,所以不管部署在哪里,相對(duì)路徑都是唯一確定的)
癥

刷新的時(shí)候 1)拋出ServletException
?????????????????????2)The page cannot be refreshed without resending the information, Click Retry to send the information again.
原因:Struts中redirect設(shè)置問題(具體原理以后再研究)
解決:一般的,forward到一個(gè)具體的page,redirect=false;forward到另一個(gè)action,redirect=true
???????????


癥

save a form --> forward to list page --> refresh --> retry --> save the form again (error)
原因:

解決:一般的,從save一個(gè)表單后,應(yīng)該forward到另一個(gè)action,且redirect=true(而不是另一個(gè)page,即便當(dāng)前action里有這個(gè)page)。這樣可以保證不會(huì)通過刷新重復(fù)save數(shù)據(jù)。

癥

??????用Spring + Velocity發(fā)email,開始都好好的,也能現(xiàn)實(shí)圖片,但當(dāng)加入某一幅圖片以后,無法正常顯示(得到一個(gè)頁面為空白的Email,雖然也有大小)。把圖片從bmp換到j(luò)pg,再換到gif,未果。減小圖片的尺寸、大小,未果。幾乎都要絕望了~~~
原因:NOTE: Invoke addInline after setText; else, mail readers might not be able to resolve inline references correctly.(這是Spring API里的原話,NND)
感受:
??????1.以前沒寫過發(fā)Email的程序,工作中用到了,照貓畫虎拿過來就用,也沒有仔細(xì)閱讀文檔,導(dǎo)致這次慘痛的教訓(xùn)。
????? 2.Spring中這部分設(shè)計(jì)的也有問題,它在兩個(gè)表面上沒什么關(guān)系的方法之間,建立了順序上的依賴關(guān)系。這使得出現(xiàn)這種情況時(shí),沒有任何線索。
癥

遍歷List時(shí),一調(diào)用remove就出錯(cuò),(錯(cuò)誤的)代碼如下




原因:ConcurrentModificationException,有remove操作時(shí),不能用foreach循環(huán)
解決:用傳統(tǒng)循環(huán)(看了傳統(tǒng)還是很有用的)




癥


原因:其實(shí)是很簡(jiǎn)單的問題,但是IDEA只會(huì)對(duì)String的 = = 做智能提示,注意即可。
癥

org.hibernate.MappingException: Could not read mappings from resource: jcat/learn/mapping.xml
?
開始以為路徑?jīng)]寫對(duì),試驗(yàn)了N中路徑的寫發(fā)后,還是不行。后來才發(fā)現(xiàn)是因?yàn)閙apping.xml是空的。
?
解決:給mapping.xml加上一個(gè)空殼就可以了(好歹空殼不等于空)
?






?
NOTE:幾種路徑的寫法
1. classpath:packagename/filename
例子:在applicationContext.xml中注冊(cè)hibernate.cfg.xml
<bean?id="GlobalHibernateSessionFactory"?class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
????????<property?name="dataSource">
????????????<ref?local="GlobalDataSource"/>
????????</property>
????????<property?name="configLocation">
????????????<value>classpath:hibernate.cfg.xml</value>
????????</property>
</bean>
1. classpath:packagename/filename
例子:在applicationContext.xml中注冊(cè)hibernate.cfg.xml








2. packagename/filename
例子:在hibernate.cfg.xml中注冊(cè)mapping.xml

癥

java.lang.IllegalArgumentException: Cannot invoke com.verican.newsadmin.form.TicketForm.setUploadFile - argument type mismatch
解決:將表單聲明為mulptipart類型



癥












解決:對(duì)于單標(biāo)簽,瀏覽器找不到innerHTML屬性。改為雙標(biāo)簽即可。
