本人郁闷啊,难道UserService没有注入到Action中啊??求高人解答
java.lang.NullPointerException
com.portal.user.web.UserAction.login(UserAction.java:44)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
UserAction代码:
- Java code
package com.portal.user.web;import java.util.Map;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import com.portal.user.model.User;import com.portal.user.service.IUserService;//通过实现ModelDriven来获取表单的内容public class UserAction extends ActionSupport implements ModelDriven<User>{ private static final Logger log = (Logger) LoggerFactory.getLogger(UserAction.class); private IUserService userService; private User model = new User(); //private String username; //private String password; //private String email; @Override public User getModel() { // TODO Auto-generated method stub return model; } //依赖注入业务逻辑组件 public void setUserService(IUserService userService) { this.userService = userService; } /* * 处理用户登录 * */ public String login(){ log.debug("user login!"); Map session = ActionContext.getContext().getSession(); //获取用户请求的表单的值 try{ //查找是否有该用户 int va = userService.login(model.getUserName(), model.getPassWord()); //如果没有,返回错误界面 if(va!=-1){ //把用户名放入session对象 session.put("username", model.getUserName()); userService.addUser(model); return SUCCESS; } }catch(RuntimeException e){ log.error("login failed", e); throw e; } return LOGIN; } /** * 用户注册 * */ public String register()throws Exception{ log.debug("User register!"); int emailnum=1; //try{ //查找用户名是否已经存在 int va = userService.findUserByName(model.getUserName()); if(va!=-1){ //邮箱是否注册过了 emailnum = userService.findByEmail(model.getEmail()); if(emailnum!=-1){ userService.addUser(model); return SUCCESS; } } return INPUT; }}
application中的配置:
- XML code
<bean id="UserDAO" class="com.portal.user.dao.UserDAO"> <property name="sessionFactory"> <ref bean="sessionFactory"></ref> </property> </bean> <!-- 部署业务逻辑组件,并把它所依赖的DAO组件注入到业务逻辑组件中 --> <bean id="UserService" class="com.portal.user.service.UserService"> <property name="userDAO" ref="UserDAO"></property> </bean> <!-- 把业务逻辑组件注入到Action中 --> <bean id="UserAction" class="com.portal.user.web.UserAction"> <property name="userService" ref="UserService"></property> </bean>
本人根据异常的断点来看
44行的 int va = userService.login(model.getUserName(), model.getPassWord());这句 userService的值是null,是不是这个原因呢? 他应该注入到action中了的,奇怪了。
------解决方案--------------------
把你错误信息贴完全
------解决方案--------------------
你的action的范围也有问题,bean的范围默认是单例,action是web的,能单例?
------解决方案--------------------