新手使用SSH框架,发现表单提交的数据在action类中全部为null

xuyueting1234 2012-01-17 09:58:17
本人是新手绝对的新手 不是计算机专业出身,完全自学了SSH,第一次将自己的所学集中起来凭着自己的感觉做一个小demo来玩,但是发现一个问题那就是,jsp表单中提交的一些数据,到了相应的action中全部为null,百思不得其解,我本人不在软件公司上班,从事的行业也不是软件行业所以找不到大牛帮我解决问题,现在求助各位论坛高手帮忙。
不罗嗦上代码:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'addNewBasicUser.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<form action="rootuser/addOneNewBranch" method="post">
用户名:<input type="text" name="username"/><br/>
密码:<input type="text" name="password"/><br/>
支行名称:<input type="text" name="branchbankname"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>

这是对应的action类

package com.actions;

import javax.annotation.Resource;

import com.dao.interfaceImp.BasicUserDaoImp;
import com.xu.model.BasicUser;
import com.xu.utils.MD5;

public class AddNewBranchBank {
private String username;
private String password;
private String branchbankname;
private BasicUserDaoImp budi;
public BasicUserDaoImp getBudi() {
return budi;
}
@Resource(name="BasicUserDaoImp")
public void setBudi(BasicUserDaoImp budi) {
this.budi = budi;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getBranchbankname() {
return branchbankname;
}
public void setBranchbankname(String branchbankname) {
this.branchbankname = branchbankname;
}

public String execute(){
System.out.println(branchbankname+":"+username+":"+password);
try{
BasicUser bu = new BasicUser();
bu.setBranchBankName(branchbankname);
bu.setUsername(username);
bu.setPassword(MD5.encrypeMd5(password));
budi.addNewBasicUser(bu);
} catch(Exception e){
e.printStackTrace();
return "input";
}
return "success";
}
}

这是相关的struts配置

<package name="rootuser" namespace="/rootuser" extends="struts-default">
<interceptors>
<interceptor name="rootUserTypeCheck" class="com.xu.interceptors.RootUserCheck"/>
<interceptor-stack name="rootUserCheck">
<interceptor-ref name="rootUserTypeCheck"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>

<global-results>
<result name="input">/RootLogin/rootlogin.jsp</result>
</global-results>
<action name="login" class="com.actions.RootLogin">
<result name="success">/WEB-INF/jsps/RootUser/desktop.jsp</result>
</action>
<action name="addNewBasicUser">
<interceptor-ref name="rootUserTypeCheck"/>
<result>/WEB-INF/jsps/RootUser/addNewBasicUser.jsp</result>
</action>
<action name="addOneNewBranch" class="com.actions.AddNewBranchBank">
<interceptor-ref name="rootUserTypeCheck"/>
<result name="success">/WEB-INF/jsps/RootUser/desktop.jsp</result>
</action>
</package>


现在的问题是我的action类中的execute方法执行后后台system.out.println打印出来的全部是null而且报空指针错。
现在请各位高手们帮我看看,我这到底是什么地方出问题了。

...全文
453 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
宏Lee 2012-01-18
  • 打赏
  • 举报
回复
那10楼的就去看看传智播客或者马士兵的视频,看看是不是非得继承actionSupport,不继承actionSupport不是不就没用了
宏Lee 2012-01-18
  • 打赏
  • 举报
回复
1,2楼的同学,讲错了吧,strust2和stust1比一大区别就是不用任何继承也能达到取值效果,只需提供execute方法,建议去试试在说。。。
宏Lee 2012-01-18
  • 打赏
  • 举报
回复
楼主将<interceptor-ref name="rootUserTypeCheck"/>,<interceptor-ref name="defaultStack"/>换下顺序先
<interceptor-ref name="defaultStack"/>在<interceptor-ref name="rootUserTypeCheck"/>
angeith 2012-01-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 a199231 的回复:]
1,2楼的同学,讲错了吧,strust2和stust1比一大区别就是不用任何继承也能达到取值效果,只需提供execute方法,建议去试试在说。。。
[/Quote]

内牛满面,不继承,我了个切,强人
  • 打赏
  • 举报
回复
<action name="addOneNewBranch" class="com.actions.AddNewBranchBank">
<interceptor-ref name="rootUserTypeCheck"/>
<result name="success">/WEB-INF/jsps/RootUser/desktop.jsp</result>
</action>
红色部分应为 rootUserCheck
readme1988 2012-01-18
  • 打赏
  • 举报
回复
会被<interceptor-ref name="rootUserTypeCheck"/>拦截器拦截
nt_gaoyonglei0216 2012-01-18
  • 打赏
  • 举报
回复
没有继承ActionSupport,所以它无法接收你传过来的参数
wnf2009 2012-01-18
  • 打赏
  • 举报
回复
拦截器应用错了

<action name="addOneNewBranch" class="com.actions.AddNewBranchBank">
<interceptor-ref name="rootUserCheck"/><!--y引用拦截器栈,不是拦截器-->
<result name="success">/WEB-INF/jsps/RootUser/desktop.jsp</result>
</action>

angeith 2012-01-18
  • 打赏
  • 举报
回复
拿项目说话,不要看视频。看看项目中会不会继承
香蕉猪 2012-01-18
  • 打赏
  • 举报
回复
报空指针错可能是数据没有提交过去,也可能是提交不完全等,,,楼主应该将报错的代码贴出来,这样才便于大家帮你查错.....
szy3121 2012-01-18
  • 打赏
  • 举报
回复
一个普通的JAVA类,不继承ActionSupport,的确可以执行execute()方法,但是,到底能不能接受参数我没试过,不敢下定论,
但是我给楼主个建议,目前常用的两种接受数据的方式(Action属性、DomainModel)都是 extens ActionSupport 你先把正常渠道走通了 然后再回头测试 普通JAVA类属性到底能否接受struts2的数据
xuyueting1234 2012-01-18
  • 打赏
  • 举报
回复
我用的是struts2 你说的这个方法不行啊!
[Quote=引用 2 楼 lichongda 的回复:]

没有继承ActionSupport
所以它无法接收你传过来的参数
[/Quote]
xuyueting1234 2012-01-18
  • 打赏
  • 举报
回复
不行啊!
[Quote=引用 3 楼 a199231 的回复:]

楼主将<interceptor-ref name="rootUserTypeCheck"/>,<interceptor-ref name="defaultStack"/>换下顺序先
<interceptor-ref name="defaultStack"/>在<interceptor-ref name="rootUserTypeCheck"/>
[/Quote]
lichongda 2012-01-17
  • 打赏
  • 举报
回复
没有继承ActionSupport
所以它无法接收你传过来的参数
zxyah 2012-01-17
  • 打赏
  • 举报
回复
AddNewBranchBank
这个类要继承 struts的ActionSupport

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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