很简单的SSH问题 java.lang.NullPointerException 在线等!!!

hewenting_123 2011-03-23 05:49:56
login.jsp
 <s:form action="register" method="post">
<s:textfield name="user.username" label="用户名"/>
<s:password name="user.password" label="密码"/>
<s:submit value="注册"/>
<s:reset value="重填"/>
</s:form>


struts.xml
<package name="default" extends="struts-default">
<action name="register" class="action.RegisterAction">
<result name="success">/success.jsp</result>
</action>

ApplicationContext.xml
<bean id="userDao" class="Realized.UserDaoHibernate" />
<bean id="User" class="bean.User"/>

<bean id="registerAction" class="action.RegisterAction">

<property name="user" ref="User"/>
<property name="userDao" ref="userDao"/>
</bean>

RegisterAction.java
package action;

import javax.annotation.Resource;

import bean.User;

import com.opensymphony.xwork2.ActionSupport;

import dao.UserDao;

public class RegisterAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
@Resource
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
private User user;
public User getUser() {
return user;
}
@Resource
public void setUser(User user) {
this.user = user;
}
public String execute() throws Exception
{
userDao.saveUser(user);
return SUCCESS;
}
}

...全文
294 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiuchangcool 2013-03-29
  • 打赏
  • 举报
回复
同上楼,遇到这个问题,网上说的问题都比较多,最多的是把action类型改成委托类型,不过感觉要改的地方挺多的。
小龙在线 2012-03-31
  • 打赏
  • 举报
回复
这个问题,最后是怎么解决的呢?有没有找到问题的根源
狂想者 2011-03-25
  • 打赏
  • 举报
回复
一种情况,你spring没能创建User对象;
二种直接new :如下
public void setUser(User user) {
this.user = new User();
}
在setUser(User user )中new User();
InTheBlueSky 2011-03-25
  • 打赏
  • 举报
回复
你这个明显是报的空指针
public String execute() throws Exception
{
userDao.saveUser(user);
return SUCCESS;
}

userDao.saveUser(user);
检查这一行
按报告来说 感觉是userDao的控制正 也不排除 user的空指针
实体还能注意给action 这个没用这样用过 运用感觉不是那么灵活
yojiwei 2011-03-25
  • 打赏
  • 举报
回复
建议断点调试一下,这样的话可以知道那个地方是Null
Horrison 2011-03-25
  • 打赏
  • 举报
回复

//个人认为应该把这两个注解都去掉,应为你已经在xml文件中注入了,就不需要了,只需要有set方法就可以
@Resource
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
private User user;
public User getUser() {
return user;
}
@Resource
public void setUser(User user) {
this.user = user;
}
修身0 2011-03-25
  • 打赏
  • 举报
回复
修改一下这里就可以了:
<package name="default" extends="struts-default">
<action name="register" class="registerAction">
<result name="success">/success.jsp</result>
</action>
这样的做法是你直接应用了spring的代理。
zx8813443 2011-03-24
  • 打赏
  • 举报
回复
是否缺少 struts2 的一个插件, struts2-spring-plugin-x-x-x.jar
此插件用来整合Spring 与 Struts2
liu4306518 2011-03-24
  • 打赏
  • 举报
回复
你有打开注解么??如果没有打开的话那个@Resource是没用的。
haoanbang 2011-03-23
  • 打赏
  • 举报
回复
public String execute() throws Exception
{
ApplicationContext ctx=new ClassPathXmlApplicationContext("bean文件路径");
this.userDao = ctx.getBean("userDao");
userDao.saveUser();
return SUCCESS;
}
这样试试呢?
haoanbang 2011-03-23
  • 打赏
  • 举报
回复
你用了ApplicationContext ctx=new ClassPathXmlApplicationContext("bean文件路径");
来加载xml文件了么
planwk 2011-03-23
  • 打赏
  • 举报
回复
我在奇怪这样写为什么IDE没给你错误提示,userDao.saveUser(user); 变量要先初始化再使用,给private User user 初始化为:private User user = null试试;
hewenting_123 2011-03-23
  • 打赏
  • 举报
回复
7楼大哥 还是相同的错误
UPC_思念 2011-03-23
  • 打赏
  • 举报
回复
另外你的spring配置文件修改为
<bean id="userDao" class="Realized.UserDaoHibernate" />

<bean id="registerAction" class="action.RegisterAction" scope="prototype">
<property name="userDao" ref="userDao"/>
</bean>
kai27ks 2011-03-23
  • 打赏
  • 举报
回复
从配置上看不到什么错。感觉更像是少了什么JAR包
UPC_思念 2011-03-23
  • 打赏
  • 举报
回复
@Resource
public void setUser(User user) {
this.user = user;
}
把@Resource去掉,你的user对象是要从页面上获得,而不是用@Resource标签从spring依赖注入
hewenting_123 2011-03-23
  • 打赏
  • 举报
回复
去掉@Resource没有反应
然后改成*.action报错 在打开login.jsp时 The Struts dispatcher cannot be found.
feigera 2011-03-23
  • 打赏
  • 举报
回复
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
改成
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
试一下吧,好像被拦截器拦截了
lyhmy 2011-03-23
  • 打赏
  • 举报
回复
你把 @Resource
public void setUser(User user) {
this.user = user;
}
这的 @Resource去掉呢
hewenting_123 2011-03-23
  • 打赏
  • 举报
回复
弱弱问一下 如果删掉user 那么userDao.saveUser(user) 这个user从哪来
加载更多回复(2)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧