首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

这个论坛有大神吗?解决方法

2013-09-05 
这个论坛有大神吗?希望大神能够帮我解决这个问题在struts(例如aAction) 用Myeclipse自动生成的DAO类(bDAO)

这个论坛有大神吗?
希望大神能够帮我解决这个问题

在struts(例如aAction) 用Myeclipse自动生成的DAO类(bDAO),
配置和注入没有问题。
1、但是在aAction中用bDAO类的findByXXX(属性就是数据库中列名)会报错,不过用bDAO里的findAll,save方法不会报错切得到正确的值。
例如:
public String execute() throws Exception {
// TODO Auto-generated method stub



String str=this.getBrandL();
List<Notebook> pList=this.getNotebookDAO().findSerices("ThinkPad");<会报错>
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
StringBuffer ddd=new StringBuffer();
for(Notebook no:pList){
ddd.append(no.getSeries());
ddd.append(",");
}
String arr=ddd.substring(0,ddd.length()-1);

response.getWriter().print(arr);
return null;
}

2、但是不在struts  action类里,而新建一个主类测试(主类配置在spring中了DAO类当然也配置在spring中)不会出错。为了区别为试过两种方法都成功了{
1、不在spring中配置主类,用最原始的spring调用方法调试例如:


ApplicationContext ctx=new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml"); 
OtherTest con=ctx.getBean("otherTest", OtherTest.class);(原始调用)
接下来调用DAO类里各种方法都成功。
2、在spring中配置主类和DAO类。例如:
String str="ThinkPad";
List<Notebook> pList=this.getNotebookDAO().findByTrademark(str);
(spring配置和注入了主类和DAO类)
接下来调用DAO类里各种方法成功。
3、我尝试在DAO类(自动生成的用HibernateTemplate接口)自己写入HibernateCallBack用来实现各种findByXXX(属性,也就是列名),然后在上面的各种环境下使用均获得成功。
例如:
public boolean isExist(final String account) {//判断用户是否存在
List list = (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
List result = session.createCriteria(Consumer.class).add(Restrictions.eq("account", account)).list();
return result;
}
});
if(list.size()>0) {
return true;
} else {
return false;
}
}(这些系统没有自动生成)


4、我现在就是不明白为什么在各种情况下为什么结果不同;既然都是系统自动生成的为什么在struts action下有区别(是我配置有问题还是为什么)。既然系统都生成了DAO类而且在其他类里都可以使用为什么不能在struts2 里也用到findByXXX各种方法(我实在是不想再自己写入其他代码,自动生成的代码应该可以用,只是我还没有实现)。

Spring Struts hibernate分享到:


------解决方案--------------------
List<Notebook> pList=this.getNotebookDAO().findSerices("ThinkPad");<会报错>

报什么错?空指针异常?
你说的不大清楚,可能是我理解能力不行,问你下,你的意思是说:
dao中同样的方法,通过spring在action中注入DAO对象调用就报错,但写个测试类,在测试类里获取spring创建的DAO对象再调用dao中的方法就不会报错。是这意思吗?
------解决方案--------------------
估计是 NotebookDAO 没有注入到 spring 

热点排行