我创建了数据库,表名是1.employee(master),2.department。我使用SQL内部联接方法以连接格式显示结果。然后我正在尝试更新员工表,我遇到了这种错误。
错误是:
> HTTP Status 500 - Servlet execution threw an exception
>
> type Exception report
>
> message Servlet execution threw an exception
>
> description The server encountered an internal error that prevented it from fulfilling this request.
>
> exception
>
> javax.servlet.ServletException: Servlet execution threw an exception
>
> root cause
>
> java.lang.Error: Unresolved compilation problem:
> setDep_id cannot be resolved or is not a field
>
> com.controller.UserController.doPost(UserController.java:85)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
在错误中跟随以下行:
1.controller.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
User user=new User();
user.setEmpName(request.getParameter("empName"));
user.setEmpAddress(request.getParameter("empAddress"));
user.setDep_id(request.getParameter("dep_id"));
String emp_id=request.getParameter("emp_id");
if(emp_id!=null && !emp_id.toString().equalsIgnoreCase(""))
{
user.setEmp_id(Integer.parseInt(emp_id));
dao.updateUser(user);
}
else
{
dao.addUser(user);
}
RequestDispatcher view=request.getRequestDispatcher(EMPLOYEE_LIST);
request.setAttribute("users", dao.getAllUsers());
view.forward(request, response);
}
2.User.java:
package;
class
public int dep_id;
public int getDep_id()
{
return dep_id;
}
public void setDep_id(int dep_id)
{
this.dep_id=dep_id;
}
public String toString()
{
return "User[emp_id="+emp_id+"]";
}
答案 0 :(得分:1)
因为在这里:
user.setDep_id=request.getParameter("dep_id");
您正在写入不存在的字段。你确实定义了一个setter:
user.setDep_id(request.getParameter("dep_id"));
答案 1 :(得分:1)
请注意,只要存在HTTP状态500状态,就会在某处编写错误的代码,因此servlet无法编译它。 它代码你没有将值传递给方法。
您正在将字符串传递给setDep_id(), 你必须先将字符串转换为整数。
int depId = Integer.parseInt(request.getParameter("dep_id"))
user.setDep_id(depId );
答案 2 :(得分:0)
如果您先编译了代码,那么您之前会遇到错误(他与servlet或HTTP状态代码无关)。
答案 3 :(得分:0)
您无法通过直接指定值来设置Dep_id
。
您必须将值传递给setDep_id
方法:
//first you need to cast to int because request.getParameter("dep_id") return a String
int depId = Integer.parseInt(request.getParameter("dep_id"))
user.setDep_id(depId );