本项目是用MyEclipse 6.0自带的add×××capability来构建的
struts和hibernate都是由spring控制
在整合过程中发现了不少问题
持续更新如下
【Tomcat log】Servlet / threw load() exceptionjavax.servlet.ServletException: Error instantiating servlet class org.apache.struts.action.ActionServlet tomcat
这个问题说明struts包的导入不对,版本不正确导致无法初始化
换了一个struts版本即可
【Tomcat log】java.lang.NoClassDefFoundError: org/apache/commons/beanutils/Converter
这个问题很明显,缺少相应的包,导入commons-beanutils即可
【Tomcat log】StandardContext[/balancer]Exception starting filter BalancerFilter
java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
这个问题初看和上一问题相似,注意到是有tomcat下/balancer目录开始报错的,我就没有理会了,因为配置文件上是写的直接在项目运行,然后看了下程序,果然没有问题。
贴下conf文件的代码
<Context path="/stat" reloadable="true" docBase="D:\workspace\stat\webroot\" >
</Context>
【JSP 页面报错】javax.servlet.ServletException: Hibernate operation: could not execute query; bad SQL grammar [……]; nested exception is java.sql.SQLException: A syntax error has occurred.
这个问题很明显是SQL语法错误,仔细查看……中的SQL语句就知道问题出在什么地方,不知道为什么,我这里由hibernate生成的hbm文件有个属性catalog=“etps”,然后SQL语句就会多出一个from etps.informix.etps_stat 实际上我需要的是informix.etps_stat。解决方法是在hbm文件中删除catalog这个标记。
javax.servlet.ServletException: No data type for node: org.hibernate.hql.ast.tree.IdentNode +-[IDENT] IdentNode:
页面报错,后台HQL语法错误。
原因是在hql中引用了一个o,但o没定义, 比如 select o from AbcClass改成select o from AbcClass o 或者 from AbcClass即可。
javax.servlet.ServletException: could not resolve property:
页面报错,后台HQL语法错误。查询的字段没有正常找到。
以select a,b from abc 为例
我是联合主键 即 C { A, B }
因此应该select abc.c.A, abc.c.B from ABC abc
Cannot find bean: "org.apache.struts.taglib.html.BEAN" in any scope
页面报错
页面使用tag的时候错误,将file标签放置于form标签外。
将其置于form中后报错:
No getter method for property: "File" of bean: "stat.form.StatForm"
这个问题很明显了。
java.lang.NullPointerException
stat.service.StatService.queryIdListByName(StatService.java:55)
stat.action.StatAction.execute(StatAction.java:67)
这样的问题也有可能是没有setDAO导致的
我的代码就是因为没有在spring配置 没有在service配置setget方法。