求救求救!为什么我的ActionForm取不到form中的某个值,名字和类型都对应了啊?!!!!
在jsp中有个dept_id 还有其他的 Actionform get的时候 get到得确实null 而其他的都正常get到了。。
jsp页面如下:
- HTML code
<%@ page contentType="text/html; charset=GBK" language="java" %><%@page import="com.bOS.bUtil.db.HibSessionFactory"%><%@page import="net.sf.hibernate.*"%><%@page import="com.bOS.bPRO_PersonManage.en.Employees"%><%@page import="com.bOS.bPRO_PersonManage.service.EmployeesDao"%><%@page import="com.bOS.bPRO_PersonManage.en.Employees"%><%@page import="com.bOS.bPRO_PersonManage.service.EmployeesDao"%><%@page import="com.bOS.bPRO_PersonManage.en.Department"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>人力资源管理系统</title><meta http-equiv="Content-Type" content="text/html; charset=GBK"><link href="css/css.css" rel="stylesheet" type="text/css"></head><script src="Js/js.js"></script><script type="text/javascript">function deptValidate(){var dept_id=document.forms["deptForm"].dept_id.value;var dept_name=document.forms["deptForm"].dept_name.value;var manager_name=document.forms["deptForm"].manager_name.value;if(dept_name.length<=0){alert("请填写部门名称!");}else if(manager_name.length<=0){alert("请填写部门经理!");}else {document.forms["deptForm"].submit();}}</script><body><% Department d=(Department)request.getAttribute("department"); if(d!=null){ System.out.println(d.getDept_id()); %><form name="deptForm" method="post" action="modifydept.do?action=updatedept"><table border="0" align="center" cellpadding="2" cellspacing="1" bordercolor="#FFFFFF" bordercolorlight="#CCCCCC" bordercolordark="#FFFFFF" > <tr align="right"> <td height="80" colspan="4" align="left" ><strong class="text13">修改部门信息</strong><br></td> </tr> <tr align="center"> <td width="80" height="24" align="right" >部门编号:</td> <td width="150" height="24" align="center" > <input name="dept_id1" type="text" class="input" id="dept_id1" value="<%=d.getDept_id()%>" disabled="disabled"> <input type="hidden" name="dept_id" id="dept_id" value="<%=d.getDept_id()%>"></td> <td width="80" height="24" align="right" >部门名称:</td> <td width="150" height="24" ><input name="dept_name" type="text" class="input" id="dept_name" value="<%=d.getDept_name() %>"></td> </tr> <tr align="center"> <td height="24" align="right" >部门经理:</td> <td height="24" > <input name="manager_name" type="text" class="input" id="manager_id" value="<%=d.getManager_name() %>"></td> <td height="24" align="right" >员工人数:</td> <td height="24" ><input name="count" type="text" class="input" value="<%=d.getCount() %>" ></td> </tr> <% }else{ %> <tr> <td height="22" colspan="2" align="center" >没有查到该部门信息!!!</td> </tr> <%}%> <tr> <tr align="right"> <td height="50" colspan="4" align="center" ><input name="Submit" type="button" class="button" value="提交" onclick="deptValidate();"> <input name="Submit2" type="reset" class="button" value="重置"></td> </tr></table></form></body></html>
Actionform如下
- Java code
package com.bOS.bPRO_PersonManage.actionform;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionMapping;import com.bOS.bPRO_PersonManage.en.Department;import com.bOS.bPRO_PersonManage.en.Employees;public class DepartmentForm extends ActionForm{ private Long dept_id; private Employees employees; private String dept_name; private String manager_name; private Integer count; public Long getDept_id() { System.out.println("get id is "+dept_id); return this.dept_id; } public Employees getEmployees() { return this.employees; } public void setEmployees(Employees employees) { this.employees = employees; } public String getDept_name() { return this.dept_name; } public void setDept_name(String dept_name) { this.dept_name = dept_name; } public String getManager_name() { return manager_name; } public void setManager_name(String manager_name) { this.manager_name = manager_name; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public void setDept_id(long dept_id) { this.dept_id = dept_id; } public String toString() { StringBuffer toStr = new StringBuffer(); toStr.append("[Department] = [\n"); toStr.append(" dept_id = " + this.dept_id + ";\n"); toStr.append(" dept_name = " + this.dept_name + ";\n"); toStr.append(" manager_name = " + this.manager_name + ";\n"); toStr.append(" count = " + this.count + ";\n"); toStr.append(" ];\n"); return toStr.toString(); } public void reset(ActionMapping arg0, HttpServletRequest arg1) { this.dept_id = null; this.dept_name = null; this.manager_name = null; this.count = null; } public Department populate(){ Department d = new Department(); d.setDept_id(getDept_id()); d.setDept_name(getDept_name()); d.setManager_name(getManager_name()); d.setCount(getCount()); System.out.println("after populate d is "+d); return d; }}
用DepartmentDao执行update操作时需要获取department 对象 此时 dep_id 就为空了 然后就抛空指针异常了!!Dao的代码如下
- Java code
package com.bOS.bPRO_PersonManage.service;import java.util.List;import net.sf.hibernate.HibernateException;import net.sf.hibernate.Query;import net.sf.hibernate.Session;import net.sf.hibernate.Transaction;import com.bOS.bPRO_PersonManage.en.Department;import com.bOS.bPRO_PersonManage.en.Max;import com.bOS.bUtil.db.HibSessionFactory;public class DepartmentDao { public void addDepartment(Department department) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); session.save(department); tx.commit(); HibSessionFactory.closeSession(); } public void addMax(Max max) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); session.save(max); tx.commit(); HibSessionFactory.closeSession(); } public void deleteDepartment(Department department) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); session.delete(department); tx.commit(); HibSessionFactory.closeSession(); } public List listDepartment() throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); Query query = session .createQuery("select d from Department as d order by dept_id"); List list = query.list(); tx.commit(); HibSessionFactory.closeSession(); return list; } public Department loadDepartment(Long dept_id) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); Department d = (Department) session.load(Department.class, new Long( dept_id)); return d; } public void updateDepartment(Department department) throws HibernateException { Department d = loadDepartment(department.getDept_id().longValue());// 原来有.longValue();报错 if (department.getDept_id() != null) { d.setDept_id(department.getDept_id()); } if (department.getDept_name() != null) { d.setDept_name(department.getDept_name()); } if (department.getManager_name() != null) { d.setManager_name(department.getManager_name()); } if (department.getCount() !=null) { d.setCount(department.getCount()); } Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); session.update(d); tx.commit(); HibSessionFactory.closeSession(); }}
求各位大侠救救我吧…还是我哪个地方马虎了。。。实在找不出来了……郁闷……
[解决办法]
还是类型名字不匹配的问题 好好检查一下就行了。