1.每次进行保存时,级联对象都自动改变。(如回复、留言是多对一的关系,如果在进行过程中不刷新,有新的留言保存后,回复的留言外键值将自动改变为新的留言ID)
解决方法:在Spring的配置文件,Action配置中加上:scope="prototype"。
原因可能是:默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性) Singleton: Spring容器只存在一个共享的bean实例,默认的配置。 Prototype: 每次对bean的请求都会创建一个新的bean实例。
2.使用fckeditor时候,保存的内容都以"<p>...<p>"此方式显示。
解决方法:显示时,为:<s:property value="#ist.content" escape="false"/>
原因:<s:property>标签的escape属性默认为true,即不解析html代码,直接将其输出。若要想输出html的效果,则要改为false.而fckeditor恰好是一个可视化HTML编辑器。
3.javamail中的两个错误:
(1)Exception in thread "main" java.lang.NoClassDefFoundError:com/sun/mail/util/LineInputStream
原因:原因是jar包版本不统一,解决方法如下: 删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.
解决方法:用rar打开X:/Program Files/MyEclipse 6.5 /myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5 ,然后删除mail。
(2)java.lang.NoClassDefFoundError: com/sun/activation/registries/LogSupport
原因:原因是jar包版本不统一,解决方法如下: 删除Java EE 5 Libraries/javaee.jar/activation里的所有东西.
解决方法:用rar打开X:/Program Files/MyEclipse 6.5 /myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5 ,然后删除activation。
4.org.hibernate.hql.ast.QuerySyntaxException: Messageid is not mapped.
原因:
1、from是实体类而不是表名
2、hibernate配置文件中没有加入相应的映射文件<mapping resource=" " />
5.attempt to create saveOrUpdate event with null entity:<以下为转载内容:http://www.blogjava.net/sxyx2008/archive/2009/10/19/298821.html>
从上面的异常信息可以看出是在Hibernate进行save的时候检测到bean为null
1) 大致从这几个方面来分析原因:
2) Hibernate(*.hbm.xml)映射文件是否错误
3) DAO层代码是否错误
4) 检查Action及视图层jsp页面等
从上面几个逐个检查后得出的结论为第四条
首先看Action中的代码
private Employee employee; public Employee getEmployee() { returnemployee; } publicvoid setEmployee(Employee employee) { this.employee = employee; } |
这里employee是我们观察的重点
再看jsp中的代码
<s:form action="saveEmployee.action"> <s:textfield name="empName" label="empName"></s:textfield> <s:textfield name="age" label="age"></s:textfield> <s:textfield name="sex" label="sex"></s:textfield> <s:textfield name="context" label="context"></s:textfield> <s:submit value="注册" theme="simple"></s:submit> <s:reset value="取消" theme="simple"></s:reset> </s:form> |
大家注意<s:textfield/>中name属性的值
很显然错误发生在此处修改如下即可:
<s:form action="saveEmployee.action"> <s:textfield name="employee.empName" label="empName"></s:textfield> <s:textfield name="employee.age" label="age"></s:textfield> <s:textfield name="employee.sex" label="sex"></s:textfield> <s:textfield name="employee.context" label="context" value=""></s:textfield> <s:submit value="注册" theme="simple"></s:submit> <s:reset value="取消" theme="simple"></s:reset> </s:form> |
由此我们得出的结论是:
在jsp页面中一定要保持页面中各个控件的name属性与Action中模型驱动对象的名字一致否则就会报错