2014-02-12 53 views
0

我創建了數據庫,表名是1.employee(master),2.department。我使用SQL內部連接方法以連接格式顯示結果。然後我試圖更新員工表,我收到這樣的錯誤。爲什麼我得到這個錯誤?HTTP狀態500 - Servlet執行引發異常?

的錯誤是:

>  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

你覺得'setDep_id無法解析或不是字段'的意思?你可以看到錯誤來自哪裏。 –

回答

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); 
+0

我不明白,現在我能做些什麼... – jmail

+0

我已經改變了那個,沒有不同的輸出形式。現在我也越來越相同的錯誤@Juba – jmail

+0

@jmail看到我更新的答案 – Salah

1

因爲這裏:

user.setDep_id=request.getParameter("dep_id"); 

您正在寫入一個不存在的字段。你這樣做雖然定義setter:

user.setDep_id(request.getParameter("dep_id")); 
0

你會更早遇到的錯誤(他無關的servlet或HTTP狀態代碼),如果你已經先編譯代碼。

+0

請檢查在部署和/或使用它之前如何編譯您的代碼。這個問題似乎可以通過靜態代碼分析很好地管理,因此在編譯時會失敗。 – Smutje

1

見,每當有HTTP狀態500個狀態,有地方,我們寫了一個錯誤的代碼,使servlet可以不編譯。 它代碼你沒有將值傳遞給方法。

您正在傳遞一個字符串給setDep_id(), 您必須首先將字符串轉換爲整數。

int depId = Integer.parseInt(request.getParameter("dep_id")) 
user.setDep_id(depId); 
相關問題