struts2中action 用domain类接收jsp参数 该domain类没有初始化,求解

jsp代码
<body>
<s:form action="action_adds" namespace="/employee">
客户名称:<s:textfield name="employee.employeename" />
客户描述: <s:textfield name="employee.describe" />
<input type="submit" value="提交" />
</s:form>

</body>
action层代码:
private Employee employee;
private String message;

public String addUI() {
return "add";
}
public String adds() {
System.out.println(getParameter("employee.employeename"));
//employeeService.add(employee);
System.out.println(employee.getEmployeename());
message = "添加成功!";
return "message";
}
public Employee getEmployee() {
return employee;
}

public void setEmployee(Employee employee) {
System.out.println("调用setEmployee方法");
this.employee = employee;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}

domain类代码:
public class Employee {
private Integer employeeid;
private String employeename;
private String describe;
private String phone;
private String email;
private String loginname;
private String password;

private Department department;
public Employee() {
System.out.println("调用Employee构造方法");
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public Integer getEmployeeid() {
return employeeid;
}
public void setEmployeeid(Integer employeeid) {
this.employeeid = employeeid;
}
public String getEmployeename() {
return employeename;
}
public void setEmployeename(String employeename) {
System.out.println("调用setEmployeename方法");
this.employeename = employeename;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
Employee中有一个成员变量department 很关键
这是另外一个domain类。问题是如果把Employee中的这个department成员变量去掉,action层可以将jsp中的参数封装到Employee对象中,如果不去掉department成员变量,employee报空指针异常,求哪位大神帮着看看

employee.department.XXX可以直接向employee中department对象的属性赋值,前提是,你的action中有setEmployee方法,且Employee中有setDepartment方法。
另外你的form的action貌似有问题调用一个action中的方法的格式是:action!fucntion.action(中间是感叹号哦,后缀看自己怎么设置的默认为.action和没有)追问

还是不行啊,不知道ssh2中怎么将jsp中传过来的参数封装到domain类中 前提是这个domain类是hibernate的实体类,并且这个实体类有级联关系,也就是说Employee类中定义了一个Department成员变量,因为必须定义这么一个成员变量 hibernate才能够根据映射文件中的many-to-one 进行级联映射

追答

  你试过其他地方的赋值有问题没?重新复制一份jar包进去看看行不行。说实话我也不知道怎么回事了,可能是你那里犯了一个不起眼的小错误,一时检查不出来。如果实在不行,建议重新写一遍,这是最彻底的办法了

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-07
你可以在form中添加<input type="hidden" name="employee.department.xx" value="xx"/>
给department成员变量的某个属性赋值,这样就不会出现报空指针异常追问

还是不行啊 不知道怎么回事,调了好几天了就是找不到原因

本回答被网友采纳
第2个回答  2013-01-06
哪行代码空指针啦?贴出来看看追问

System.out.println(getParameter("employee.employeename"));//这一个可以打印出来

System.out.println(employee.getEmployeename());//这一行报空指针异常 也就是employee为空

struts2中action 用domain类接收jsp参数 该domain类没有初始化,求解
employee.department.XXX可以直接向employee中department对象的属性赋值,前提是,你的action中有setEmployee方法,且Employee中有setDepartment方法。另外你的form的action貌似有问题调用一个action中的方法的格式是:action!fucntion.action(中间是感叹号哦,后缀看自己怎么设置的默认为.action和没有)...

strus2 的action类中定义同名变量,为啥能自动获取jsp的参数
struts2框架就是对servlet进行了一些封装,我们在servlet中获取页面参数的时候是调request.getParameter(“XXX”)来获取参数值,其实struts2也是这样的,只是struts2对你隐藏了这一步,你看不到而已。你在web.xml中可以看到我们配置了struts2的filter,在你访问一个页面的时候(比如manage\/userAdd.action)...

Struts2用Ajax提交报错ognl.NoSuchPropertyException
你action里面接收参数的方法跟JQ传参数的方法没对应,首先你页面input里面的name是用对象.参数,这个是要用form表单提交,后台才能用对象接受,现在你JQ里面使用的jsondata,相当于只是传了2个值过去而不是对象,现在你在action中在定义对应的2个私有个账号密码,看看是不是有值,你有2个选择后台会获取到...

新手求解。struts2 DomainModel方法传送参数为什么接受不了?_百度知 ...
1、在页面地址写为:action="user!add.action"2、在xml中改为 : <action name="user" class="com.struts2.user.action.UserAction" method=add>

struts2整合spring问题,提示不能实例化action类,找不到类中的方法,错误...
当你用@Controller没指定名称时,bean的name是首字母小写,也就是registerAction,也就是 <action name="register*" class="registerAction" method="{1}" >

struts2 domain model传参数的问题
因为你在actin里面定义了user属性,jsp就必须采用用这种ognl的形式:user.name 它会通过user.setName(String)给set进去。你也可以要在action定义name,password, jsp就可以和它保持一致,但你还是得构造相应的user对象以保存到数据库,所以就目前这种方式来说并无不妥。

关于struts2将参数以属性的方式注入到action的疑惑,弄了两天两夜,终于...
建议你在使用struts2的时候,所有action用于接受网页参数的属性都设置为private String,这样就不会有任何问题。就算你实际需要接受的是一个年龄或者数量这样的数值类型,也应该在接受到参数以后再做转换(Integer.parseInt).根本原理在于,你看一下jsp的相关文档,request.getParameter("xxxx");这个方法只提供了...

struts2框架配置文件里action中的method属性如何设置
1. **定义Action类**:首先,需要有一个实现了Struts2 Action接口的Java类,或者更常见的是继承自ActionSupport类的类。在这个类中,可以定义多个处理请求的方法,这些方法通常返回一个表示处理结果的字符串(如SUCCESS、ERROR等)。2. **配置struts.xml**:在struts.xml配置文件中,为每一个需要处理的...

struts2:在struts2中有一个action类,该类中的execute方法是如何返回数据...
get方法,struts2会根据jsp页面和action以及配置文件生成一个新的severlet.class文件(过程封装在struts里),这个severslet就是返回结果时最终的来源

struts2为什么我老是搞不懂action中要创建多个属性,并且还要写一个mode...
打个比方吧:假如你的jsp页面有着这样一个标签 这个值会传到action类的id当中,而不是传到student类的id。如果你想传给student,那么jsp页面应该这样写 有时候你可能用到其他的框架譬如ibatis,但是他只能传入一个参数,你就可以用你的model把数据放在一起,把对象当做一个参数使用。同时数据的安全性也...

相似回答