这是我的代码
首先是dingcang.jsp这是初始页面
是一个静态的三级级联菜单<%@ page contentType="text/html;charset=gbk"%>
<%@ page import="java.util.*"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<html:html lang="true">
<head>
<title>一元软件订餐系统</title>
<script language="JavaScript"> function Dsy() 

this.Items = {}; 

Dsy.prototype.add = function(id,iArray) 

this.Items[id] = iArray; 

Dsy.prototype.Exists = function(id) 

if(typeof(this.Items[id]) == "undefined") 

return false; 

return true; 
} function change(v) 

var str="0"; 
for(i=0;i<v;i++) 

str+=("_"+(document.getElementById(s[i]).selectedIndex-1)); 
}; 
var ss=document.getElementById(s[v]); 
with(ss) 

  length = 0; 
  options[0]=new Option(opt0[v],opt0[v]); 
  if(v && document.getElementById(s[v-1]).selectedIndex>0 || !v) 
  { 
   if(dsy.Exists(str)) 
   { 
    ar = dsy.Items[str]; 
    for(i=0;i<ar.length;i++) 
    { 
    options[length]=new Option(ar[i],ar[i]); 
    } 
    if(v)options[1].selected = true; 
   } 
  } 
  if(++v<s.length) 
  { 
  change(v); 
  } 

} var dsy = new Dsy(); dsy.add("0",["陶大商务套餐","马老七","食全食美"]); dsy.add("0_0",["汤类","商务套餐类","水煮类"]); dsy.add("0_0_0",["黄瓜皮蛋汤","萝卜排骨汤","香菇肉片汤","山药老鸭汤","杂菇汤","海蛎豆腐汤"]); 
dsy.add("0_0_1",["肉末茄子饭","烧大排饭","椒盐秋刀鱼饭","回锅肉饭","卤鸡腿饭","梅菜扣肉饭","蜜汁排骨饭","盐水鸭饭"]); 
dsy.add("0_0_2",["水煮花蛤","水煮鸭血","水煮肉片","水煮田鸡"]); 
dsy.add("0_1",["泡粉类","商务套餐类","营养炖罐类","点心类","粥品类","拌菜类"]); dsy.add("0_1_0",["猪血泡粉","花蛤泡粉","青菜泡粉","酸菜泡粉","瘦肉泡粉","猪肝泡粉","猪血泡粉","牛肉泡粉","牛肚泡粉","罗汉肉泡粉",]); 
dsy.add("0_1_1",["五彩炒米饭","青椒肉丝蛋炒饭","回锅肉饭","红烧鸡腿饭","梅菜扣肉饭","宫保鸡丁饭","台式卤肉饭","炸猪排饭","三杯鸡饭","红烧大排饭","可乐鸡翅饭","花生猪脚饭",]); 
dsy.add("0_1_2",["目鱼炖龙骨","人参枸杞炖乌鸡","香菇莲子炖猪肚","黄豆炖猪脚","茶树老鸭汤","当归萝卜炖牛排"]); 
dsy.add("0_1_3",["油条","海蛎饼","板栗肉粽","香菇肉粽","小笼包","蛋黄肉粽"]);
dsy.add("0_1_4",["拌春菜","拌青菜","拌空心菜","拌上海青","拌菠菜","拌猪血"]);dsy.add("0_2",["面类","套餐类","炖罐类"]); dsy.add("0_2_0",["牛肉面","花蛤面","牛肉丸面","罗汉肉面","农家鸡血面","酱烧猪脚面","酸菜牛肉面","香菇排骨面","目鱼筒骨面","台式海鲜面","香辣牛排面","沙茶牛肉面"]); 
dsy.add("0_2_1",["烧烤全鱼饭","红焖牛排饭","稻香烤鸭饭","海蛎煎蛋饭","闽南卤肉饭","肉末茄子饭","烧大排饭","椒盐秋刀鱼饭","回锅肉饭","卤鸡腿饭","梅菜扣肉饭","蜜汁排骨饭","盐水鸭饭"]); 
dsy.add("0_2_2",["目鱼炖龙骨","人参枸杞炖乌鸡","香菇莲子炖猪肚","黄豆炖猪脚","茶树老鸭汤","当归萝卜炖牛排","药膳乌鸡汤","海带排骨汤"]); </script> <script language = JavaScript> var s=["s1","s2","s3"]; 
var opt0 = ["餐厅","品种","菜品"]; 
function setup() 

for(i=0;i<s.length-1;i++) 
  document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")"); 
change(0); 

</script> 
</head><body onLoad="setup()" >
<center>
<jsp:include flush="true" page="../inc/template.jsp">
<jsp:param name="url" value="../"/>
</jsp:include> 
<font face="楷体-GB2312" SIZE="5" color="red">请选择你喜欢的食物</font><br>
<html:form action="dingcang.do" method="post">
订餐人姓名:<html:text property="userid"></html:text><br>
选择餐厅:<select id="s1" name="canting"> </select><br>
选择种类:<select id="s2" name="pinzhong"> </select><br>
选择菜品:<select id="s3" name="caipin"> </select><br>
<html:submit value="订餐"></html:submit>
<html:reset value="重置"></html:reset>
</html:form></center>
</body>
</html:html>
dingcangform里面什么都没有设置
接下来是dingcangaction:/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.web.struts.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;import com.web.dao.IDingcangDAO;
import com.web.struts.form.DingcangForm;
import com.web.vo.Dingcang;/** 
 * MyEclipse Struts
 * Creation date: 01-07-2006
 * 
 * XDoclet definition:
 * @struts.action path="/dingcang" name="dingcangForm" input="/form/dingcang.jsp" parameter="status" scope="request" validate="true"
 */
public class DingcangAction extends DispatchAction {
private IDingcangDAO idingcangdao;
/*
 * Generated Methods
 */ public IDingcangDAO getIdingcangdao() {
return idingcangdao;
} public void setIdingcangdao(IDingcangDAO idingcangdao) {
this.idingcangdao = idingcangdao;
} /** 
 * Method execute
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DingcangForm dingcangForm = (DingcangForm) form;// TODO Auto-generated method stub
String id=(String)request.getParameter("userid");
String canting=(String)request.getParameter("canting");
String pinzhong=(String)request.getParameter("pinzhong");
String caipin=(String)request.getParameter("caipin");
String dingcangtime=(String)request.getParameter("dingcangtime");
Dingcang dingcang = null;
try {
dingcang = new Dingcang();
dingcang.setCaipin(caipin);
dingcang.setCanting(canting);
dingcang.setDingcangtime(dingcangtime);
dingcang.setPinzhong(pinzhong);
dingcang.setUserid(id);
this.idingcangdao.register(dingcang);
} catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward("dingcangsuccess");
}
}
然后是struts设置
<action
      attribute="dingcangForm"
      input="/form/dingcang.jsp"
      name="dingcangForm"
      parameter="status"
      path="/dingcang"
      scope="request"
      type="com.web.struts.action.DingcangAction">
      <forward name="dingcangsuccess" path="/jsp/dingcangsuccess.jsp"></forward>
    </action>再下来是application设置
<bean id="idingcangdao" class="com.web.dao.IDingcangDAO" abstract="true"></bean>
<bean id="idingcangdaoimpl" class="com.web.impl.IDingcangDAOImpl" parent="idingcangdao">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
<bean name="/jsp/dingcang" class="com.web.struts.action.DingcangAction">
<property name="idingcangdao">
<ref bean="idingcangdaoimpl"/>
</property>
</bean>
在dingcang.jsp页面一按提交 传入数据库中就报空指针错误
java.lang.NullPointerException
at com.web.struts.action.DingcangAction.execute(DingcangAction.java:65)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.web.filter.EncodingFilter.doFilter(EncodingFilter.java:22)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
第65行为dingcangaction中的this.idingcangdao.register(dingcang);第一次发帖提问 如果有什么不规范的地方 望原谅我用的是SSH整合框架

解决方案 »

  1.   

    idingcangdao这个dao注入成功了???
      

  2.   

    我后面有new了idingcangdao进去了貌似没有注入成功 麻烦帮我看一下到底是哪里出了问题 我觉得我impl也有问题
    public class IDingcangDAOImpl extends HibernateDaoSupport implements
    IDingcangDAO { public void register(Dingcang dingcang) throws Exception {
    super.getSession().save(dingcang);
    } }好像听说super.getSession().save(dingcang); 这个是错误的
      

  3.   

    this.idingcangdao是空的,你换成getIdingcangdao().register(dingcang);试试,要是还不行,说明是Spring配错了
      

  4.   

    用eclipse不,设个断点debug一下
      

  5.   

    换成getIdingcangdao().register(dingcang);也不行我在action中new了个idingcangimpl出来也不行不知道spring配置中是不是哪一块出了问题听说方法的实现类中的存入数据库的方法 
    super.getSession.save();这个是不对的 是不是真的 望指教
      

  6.   

    你把你struts-config.xml中的type="com.web.struts.action.DingcangAction"换成type="org.springframework.web.struts.DelegatingActionProxy"这个试试;你用hibernateTemplate,为什么在dao中不直接用ht.save();呢?
      

  7.   

    不知道lz提交的时候能不能进入execute方法....
      

  8.   

    不知道,你问题解决了没z~~~~但是在
    <bean id="idingcangdao" class="com.web.dao.IDingcangDAO" abstract="true"></bean>
    <bean id="idingcangdaoimpl" class="com.web.impl.IDingcangDAOImpl" parent="idingcangdao">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate"/>
    </property>
    </bean>
    <bean name="/jsp/dingcang" class="com.web.struts.action.DingcangAction">
    <property name="idingcangdao">
    <ref bean="idingcangdaoimpl"/>
    </property>

    </bean>
    红色那边好像有错,看一下吧~~~
      

  9.   


    这个是需要弄的!!我也遇到了同样的错误 java.lang.NullPointerException我的daoImpl用的是HibernateCallback,代码如下:
    public class BuyInfoDAO extends HibernateDaoSupport implements ICarDao { public List<BuyInfo> getAll() {

    return getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session)
    throws HibernateException, SQLException {
    String hql="from BuyInfo buy order by buy.id desc";
    Query query=session.createQuery(hql);
    return query.list();
    }});
    }

    }
    感觉不是这的错,因为平时都是这么做的。
    大家注意这个:at com.web.struts.action.DingcangAction.execute(DingcangAction.java:65)请高手帮忙