谢谢大家,很急的!
这是Biz层的方法
public Goods get(long id) {
// TODO Auto-generated method stub
System.out.println("在Biz层输出:"+id);
// 这个Id没问题。值传到了.等到调用是就出错了,
return goodsDAO.get(id);
}
这是Dao层的方法 public Goods get(long id) {
// TODO Auto-generated method stub
return (Goods)super.getHibernateTemplate().get(Goods.class, id);
//super是HibernateDaoSupport
}当我在Action 里面的public ActionForward doBid(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
GoodsBiz goodsbiz=new GoodsBiz();
// GoodsDAOImpl goodsbiz=new GoodsDAOImpl();
DynaActionForm bidform=(DynaActionForm)form;
String goods_id=(String) request.getParameter("goods_id");
System.out.println("转换goods_id"+goods_id);
//出价商品的id
long id=Long.parseLong(goods_id);
Goods goods=goodsbiz.get(id); //出错地方
}
出错是的提示: 严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.dsf.biz.GoodsBiz.get(GoodsBiz.java:35)
at com.dsf.struts.action.BidAction.doBid(BidAction.java:57) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
这是Biz层的方法
public Goods get(long id) {
// TODO Auto-generated method stub
System.out.println("在Biz层输出:"+id);
// 这个Id没问题。值传到了.等到调用是就出错了,
return goodsDAO.get(id);
}
这是Dao层的方法 public Goods get(long id) {
// TODO Auto-generated method stub
return (Goods)super.getHibernateTemplate().get(Goods.class, id);
//super是HibernateDaoSupport
}当我在Action 里面的public ActionForward doBid(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
GoodsBiz goodsbiz=new GoodsBiz();
// GoodsDAOImpl goodsbiz=new GoodsDAOImpl();
DynaActionForm bidform=(DynaActionForm)form;
String goods_id=(String) request.getParameter("goods_id");
System.out.println("转换goods_id"+goods_id);
//出价商品的id
long id=Long.parseLong(goods_id);
Goods goods=goodsbiz.get(id); //出错地方
}
出错是的提示: 严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.dsf.biz.GoodsBiz.get(GoodsBiz.java:35)
at com.dsf.struts.action.BidAction.doBid(BidAction.java:57) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
this.goodsDAO = goodsDAO;
}
被注入的goodsDAO public Goods get(long id) {
// TODO Auto-generated method stub
System.out.println("在Biz层输出:"+id);
if(goodsDAO==null){
System.out.println("goodsDAO is null");
}
return goodsDAO.get(id);
}
public List getOnSaleGoodsList(){
System.out.println("1");
List list=goodsDAO.getOnSaleGoodsList();
if(goodsDAO!=null){
System.out.println("goodsDAO is ok");
}
return list;
}
以上两个方法都是Biz层的,goodsDAO在这个应用中goodsDAO.getOnSaleGoodsList();非空。我做的
验证:
if(goodsDAO!=null){
System.out.println("goodsDAO is ok");
}结果是:goodsDAO is ok!都出来了,而且这个方法我在首页就用到了,返回了可用的list。但是在:goodsDAO.get(id);就在这个方法中goodsDAO是空的,验证如下: if(goodsDAO==null){
System.out.println("goodsDAO is null");
} 也通过验证了,结果是:goodsDAO is null这说明我在Spring的配置文件,biz层中把goodsDao已经注入,下面是配置:<beans>xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url"
value="jdbc:microsoft:sqlserver://localhost:1433">
</property>
<property name="username" value="sa"></property>
<property name="password" value="sa"></property>
</bean><bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/dsf/entity/Goods.hbm.xml</value>
<value>com/dsf/entity/Euser.hbm.xml</value>
<value>com/dsf/entity/Bid.hbm.xml</value></list>
</property>
</bean><!-- 第二个action --><!-- DAO层goodsBean -->
<bean id="goodsDAO" class="com.dsf.dao.impl.GoodsDAOImpl">
<property name="sessionFactory" ref="sessionFactory">
</property>
</bean>
<!-- 业务层goods-->
<bean id="goodsBizTarget" class="com.dsf.biz.GoodsBiz">
<property name="goodsDAO" ref="goodsDAO"></property>
</bean> <!-- goodsAction -->
<bean name="/goods" class="com.dsf.struts.action.GoodsAction">
<property name="goodsBizProxy" ref="goodsBizProxy">
</property>
</bean> <!-- 声明事务管理器 -->
bean id="myTranscationBean" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 声明代理bean-->
<bean id="goodsBizProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="myTranscationBean"> </property>
<property name="target" ref="goodsBizTarget"></property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>本人很急,谢谢各位!
GoodsBiz goodsbiz=new GoodsBiz();
你new出来的对象没用