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

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





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

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

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

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


癥

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

解決:一般的,從save一個表單后,應該forward到另一個action,且redirect=true(而不是另一個page,即便當前action里有這個page)。這樣可以保證不會通過刷新重復save數據。

癥

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

遍歷List時,一調用remove就出錯,(錯誤的)代碼如下




原因:ConcurrentModificationException,有remove操作時,不能用foreach循環
解決:用傳統循環(看了傳統還是很有用的)




癥


原因:其實是很簡單的問題,但是IDEA只會對String的 = = 做智能提示,注意即可。
癥

org.hibernate.MappingException: Could not read mappings from resource: jcat/learn/mapping.xml
?
開始以為路徑沒寫對,試驗了N中路徑的寫發后,還是不行。后來才發現是因為mapping.xml是空的。
?
解決:給mapping.xml加上一個空殼就可以了(好歹空殼不等于空)
?






?
NOTE:幾種路徑的寫法
1. classpath:packagename/filename
例子:在applicationContext.xml中注冊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中注冊hibernate.cfg.xml








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

癥

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



癥












解決:對于單標簽,瀏覽器找不到innerHTML屬性。改為雙標簽即可。
