症
状:刚配置好struts,可是DispatchAction怎么都不工作(Action可以工作),也不报错
原因:只引入了struts自身的jar,看一看release中lib下,还有不少非struts的jar,可以猜想这些都是DispatchAction所需要的,而Action不需要(以前以为这些没用)。不报错让我很郁闷。
症
状:刚配置好struts,action可以工作了,就是不能正确的forward到jsp页面,execute中加断点,也不进入。
原因:execute有两个!!!
HttpServletRequest vs ServletRequest,前者才是struts所使用的execute。
症
状:在web.xml里面设置好了
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page> 但当出现
404错误时,并没有显示404.jsp这一页,而是显示browser提供的error report page
原因:在客户端浏览器如IE的internet选项高级属性中默认使用“友好的http错误信息”,这样会造成你的服务器是输出你所定义的错误页面,但到客户端被IE这混蛋给覆盖掉了。解决方案是你定义的错误页面的大小必须大于
512bytes,就不会被客户端设置所影响了。
症
状:用hibernate访问数据库,可以insert,可以select,可以drop,就是不能
update,而且没有任何错误消息
原因:
<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
<forward name="add_item" path="newsletter.add_item.page" redirect="false"/>
<forward name="success" path="/newsletter.do" redirect="true"/> 症
状:
save a form --> forward to list page --> refresh --> retry --> save the form again (error)
原因:
<forward name="list" path="ticket.list.page" redirect="false"/> 解决:一般的,从save一个表单后,应该forward到另一个action,且redirect=true(而不是另一个page,即便当前action里有这个page)。这样可以保证不会通过刷新重复save数据。
<forward name="list" path="ticket.do" redirect="true"/> 症
状:
用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就出错,(错误的)代码如下
for (Object o : list)
{
list.remove(o);
} 原因:ConcurrentModificationException,有remove操作时,不能用foreach循环
解决:用传统循环(看了传统还是很有用的)
for (int i = 0; i < list.size(); i++)
{
list.remove(i--);
}
注意remove过
后需要
i-- (--i is wrong)
症状:
boolean b = new Integer(3) == new Integer(3); //false 原因:其实是很简单的问题,但是IDEA只会对String的 = = 做智能提示,注意即可。
症
状:
org.hibernate.MappingException: Could not read mappings from resource: jcat/learn/mapping.xml
开始以为路径没写对,试验了N中路径的写发后,还是不行。后来才发现是因为mapping.xml是空的。
解决:给mapping.xml加上一个空壳就可以了(好歹空壳不等于空)
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping default-lazy="false">
</hibernate-mapping>
2.
packagename/filename例子:在hibernate.cfg.xml中注册mapping.xml
<mapping resource="jcat/learn/hibernate_in_spring/orm.xml"/> 症
状:提交表单程序,加入了上传文件的功能后,出现异常
java.lang.IllegalArgumentException: Cannot invoke com.verican.newsadmin.form.TicketForm.setUploadFile -
argument type mismatch
解决:将表单声明为mulptipart类型
<html:form action="/ticket" enctype="multipart/form-data">
<html:file property="uploadFile"/>
</html:form> 症
状:IE cannot open the Internet site file: ....
<html>
<head>
<title></title>
</head>
<body>
<span id="TypeDes2"/>
<script type="text/javascript">
TypeDes2.innerHTML = "Test Span";
</script>
</body>
</html> 解决:对于单标签,浏览器找不到innerHTML属性。改为双标签即可。
<span id="TypeDes2"></span>
posted on 2006-07-25 13:11
Jcat 阅读(766)
评论(0) 编辑 收藏 所属分类:
Java