最近学SSH项目整合的员工管理系统,大部分功能都可以实现,但是在员工管理界面对
员工进行编辑保存后,员工的所属部门一栏就会变成空,新增员工的话,那一栏的属性
也会为空,按一下保存就会报Error setting expression 'department.did' with value '[Ljava.lang.String;@7e7a0b12'和target is null for setProperty(null, "did", [Ljava.lang.String;@7e70b12),调了很久没搞明白,还希望有懂的同学不吝赐教
我已将代码上传到网盘以供愿意提供帮助的同学调试,http://pan.baidu.com/s/1mi2qZjU,提前谢谢了
看看,跟你一样的错误http://www.cnblogs.com/communist/p/6045823.html
1.EmployeeAction.java
package com.muke.employee.action;
import java.util.List;
import com.muke.employee.domain.Department;
import com.muke.employee.domain.Employee;
import com.muke.employee.domain.PageBean;
import com.muke.employee.service.DepartmentService;
import com.muke.employee.service.EmployeeService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/*
员工管理的Action类
*/
public class EmployeeAction extends ActionSupport implements ModelDriven{
//模型驱动所需的对象
private Employee employee = new Employee();
//使用模型驱动接收参数
@Override
public Employee getModel() {
// TODO Auto-generated method stub
return employee;
}
//注入业务层的类
private EmployeeService employeeService;
public void setEmployeeService(EmployeeService employeeService) {
this.employeeService = employeeService;
}
//登陆执行的方法
public String login(){
System.out.println("login方法执行了。。。");
//调用业务层的类
Employee existEmployee = employeeService.login(employee);
if(existEmployee == null){
//登录失败
this.addActionError("用户名或密码错误!");
return INPUT;
}else{
//登陆成功
ActionContext.getContext().getSession().put("existEmployee", existEmployee);
return SUCCESS;
}
}
//接受当前的页数
private Integer currPage = 1;
public void setCurrPage(Integer currPage) {
this.currPage = currPage;
}
//分页查询员工方法
public String findAll(){
PageBean pageBean = employeeService.findByPage(currPage);
//将pageBean存放到值栈中
ActionContext.getContext().getValueStack().push(pageBean);
return "findAll";
}
//注入部门管理的Service
private DepartmentService departmentService;
public void setDepartmentService(DepartmentService departmentService) {
this.departmentService = departmentService;
}
//跳转到添加员工页面的方法
public String saveUI(){
//查询所有部门
List list = departmentService.findAll();
//将结果保存到值栈中,集合用set,对象用push
ActionContext.getContext().getValueStack().set("list", list);
//ServletActionContext.getRequest().setAttribute("list", list);
System.out.println(list);
return "saveUI";
}
//添加员工的执行方法
public String save(){
employeeService.save(employee);
return "saveSuccess";
}
//编辑员工的执行方法
public String edit(){
//根据Id查询员工
employee = employeeService.findById(employee.getEid());
//查询所有部门
List list = departmentService.findAll();
ActionContext.getContext().getValueStack().set("list", list);
return "editSuccess";
}
//修改员工的执行方法
public String update(){
employeeService.update(employee);
return "updateSuccess";
}
//删除员工的执行方法
public String delete(){
employee = employeeService.findById(employee.getEid());
employeeService.delete(employee);
return "deleteSuccess";
}
}
2.员工添加界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
员工添加 |
保存 退回 |
姓 名 : | 性 别 : | ||
所属部门: | 工 号 : | ||
出生日期: | 入职日期: | ||
账户名称: | 账户密码: |
你保存该字段,该字段值为空。你看看你的sql语句有没有问题
就是自动生成的,会有这种情况出现,会有默认没有改动就设为空的,你看看自动生成的有几个update方法