问题描述
我在开发过程中,遇到这样一个问题:用户注册时输入邮箱,然后使用dwr进行校验。<createcreator="new"javascript="LoginCheckDwr"><paramname="class"value="cn.com.web.account.dwr.LoginCheckDwr"/></create>下面是这个dwr的代码publicclassLoginCheckDwr{@Autowired@Qualifier("loginCheckService")privateILoginCheckServiceloginCheckService;publicStringcheckEmail(Stringemail,HttpServletRequestrequest){UserInfouserInfo=loginCheckService.getUserInfoByEmail(email);....................//其他代码省略}}通过LoginCheckDwr.checkEmail(email,function(data){})调用次验证方法时,发现loginCheckService为空null,即这个servicebean并没有注入进来。publicinterfaceILoginCheckService{UserInfogetUserInfoByEmail(Stringemail);}@compoment("loginCheckService")publicclassLoginCheckServiceImplimplementsILoginCheckService{publicUserInfogetUserInfoByEmail(Stringemail){........................//次数代码省略}}spring的配置是没有问题的,在其他action中都是可以注入的,就是通过dwr配置的类无法注入,求解为什么?谢谢大神
解决方案
解决方案二:
不用注入吧,直接WebApplicationContextwac=WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());LuceneServiceluceneService=(LuceneService)wac.getBean("luceneService");
解决方案三:
之后有尝试了另外一种方法,dwr中这样配置<createcreator="spring"javascript="LoginCheckDwr"><paramname="beanName"value="loginCheckService"/></create>直接使用service中的check方法,但是调用时会提示没有名为loginCheckService的bean。网上的资料都是说通过spring-config.xml里配置bean,都没有说如何使用spring注解bean的,请问大神们,如何使用。
解决方案四:
引用1楼yangqiu0928的回复:
不用注入吧,直接WebApplicationContextwac=WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());LuceneServiceluceneService=(LuceneService)wac.getBean("luceneService");
在dwr中手动获取springbean的话,如何获得getServletContext()呢。