猿问

一测试方法就显示空指针异常 , 打印出来发现 getSession() 是 null ,是什么情况?

package action;
import java.util.List;
import util.GeneralAction;

public class FindAction extends GeneralAction{

private static final long serialVersionUID = 1L;

public List<String> getNames() {

return (List<String>)getSession().get("names");
}

public void setNames(List<String> names) {
getSession().put("names", names);
}

//查找角色名称是否存在
public boolean checkRole(String name)
{
System.out.println(getSession());//此处控制台打印为null
List<String> names = getNames();
System.out.println(names);
if(names == null)
{
names = daoFactory.getRoleDa().getAllRoleName();
setNames(names);
}
if(names.contains(name))
{
return false;
}
return true;
}
}

getSession在父类GeneralAction中定义了,

项目是SSH三个框架整合的,又加了个dwr,

所以Action都是放在Spring容器中的,

dwr我写了2个测试类,一个是dao类,测试通过,

另一个额就是这个action了,也显示生成成功,

但一测试方法就显示空指针异常 - -

打印出来才发现 getSession() 是 null

别的地方调用的时候都很正常,

这是怎么回事啊?
问题我自己知道了,dwr有自己获得session的方式,而不能用struts的方式获得session

dwr要用 WebAction 来获得 session

代码; WebAction web = WebActionFactory.get().getSession();

谢谢各位了

慕标5832272
浏览 232回答 1
1回答

尚方宝剑之说

你可能有两个地方没有配置:1、SessionFactory<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"></bean>2、在GeneralAction、FindAction 的bean注入SessionFactory<bean id="GeneralAction" class="...GeneralAction"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="FindAction " class="...FindAction "><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean>PS:配置过后重启试试
随时随地看视频慕课网APP
我要回答