分享

java学习中错误汇总

 桑枯海 2013-03-30

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./sxyx2008/archive/2009/10/19/298821.html>

 

从上面的异常信息可以看出是在Hibernate进行save的时候检测到beannull

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中模型驱动对象的名字一致否则就会报错

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多