Saya telah membaca topik serupa seperti ini, dan yang itu tapi tidak membantu masalah saya.
Saya membuat aplikasi web JavaEE mvc sederhana. Halaman jsp berisi formulir dengan dua bidang teks dan dua tombol. Bidang teks pertama untuk memasukkan Id, bidang teks kedua untuk memasukkan nama. Tergantung pada tombol mana yang diklik, Servlet merutekan ke metode yang sesuai (Cari berdasarkan ID atau Cari berdasarkan Nama). Metode pencarian berdasarkan id berfungsi dengan benar. Dan saya melihat jalur berikut di bilah alamat: http://localhost:8080/employees_war_exploded/ControllerServlet?textEmployeeId=1&command=Search_ID&employeeName=
Namun ada masalah dengan metode Pencarian berdasarkan nama. Itu tidak menunjukkan hasil apa pun. Inilah yang saya lihat di bilah alamat: http://localhost:8080/employees_war_exploded/ControllerServlet?textEmployeeId=&employeeName=ann&command=Search_Name
Saya kira masalahnya adalah dalam kedua kasus ia mendapatkan parameter dari kedua bidang teks ("textEmployeeId" dan "employeeName"). Bagaimana saya bisa memproses kedua input secara terpisah dalam bentuk yang sama? Mungkin ada alasan lain untuk masalah ini yang tidak saya lihat?
<form class="form-style" name="form1">
<label>ID:
<input type="text" name="textEmployeeId" value="${tempEmployee.id}" />
</label>
<input type="submit" name="command" value="Search_ID">
<br>
<br>
<label>Name:
<input type="text" name="employeeName" value="${tempEmployee.name}" />
</label>
<input type="submit" name="command" value="Search_Name">
<br>
<br>
</form>
ControllerServlet.java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String theCommand = request.getParameter("command");
if (theCommand == null) {
theCommand = "EMPLOYEE_LIST";
}
// route to the appropriate method
switch (theCommand) {
case "EMPLOYEE_LIST":
listEmployees(request, response);
break;
case "Search_ID":
searchById(request, response);
break;
case "Search_Name":
searchByName(request, response);
break;
default:
listEmployees(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void searchByName(HttpServletRequest request, HttpServletResponse response) throws Exception {
String nameString = request.getParameter("employeeName");
List<Employee> namedEmployees = employeeDbUtil.searchEmployees(nameString);
request.setAttribute("EMPLOYEES", namedEmployees);
RequestDispatcher dispatcher = request.getRequestDispatcher("/search-by-name.jsp");
dispatcher.forward(request, response);
}
private void searchById(HttpServletRequest request, HttpServletResponse response) throws Exception {
String textString = request.getParameter("textEmployeeId");
Employee theEmployee = employeeDbUtil.getEmployeeById(textString);
request.setAttribute("THE_EMPLOYEE", theEmployee);
RequestDispatcher dispatcher = request.getRequestDispatcher("/show-employee.jsp");
dispatcher.forward(request, response);
}
}
Pembaruan: Saya mendapatkan NullPointerException untuk metode searchByName. Mungkinkah ada masalah dengan metode ini dari kelas DAO yang dipanggil dari ControllerServlet?
public List<Employee> searchEmployees(String employeeName) throws Exception {
List<Employee> employeeList = new ArrayList();
Connection myConnection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
employeeName += "%";
preparedStatement = myConnection.prepareStatement("SELECT * FROM employees WHERE LOWER(name) like LOWER(?)");
preparedStatement.setString(1, employeeName);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
Employee tempEmployee = resultSetToEmployee(resultSet);
employeeList.add(tempEmployee);
}
return employeeList;
}
finally {
DbExceptions.close(resultSet);
DbExceptions.close(preparedStatement);
DbExceptions.close(myConnection);
}
}
search-by-name.jsp
? Sepertinya aliran eksekusi servlet Anda keluar dari atribut perintah dan hanya mengakses atribut lain berdasarkan perintah. - person Zachary Craig   schedule 13.12.2016/show-employee.jsp
yang menunjukkan hasil yang diharapkan. Tetapi ketika saya menekan tombol Search_Name saya mendapatkan NullPointerException. Dan itu tidak mengarahkan saya ke halamansearch-by-name.jsp
. Hanya ada halaman browser putih kosong. - person Ivan T   schedule 14.12.2016searchEmployees(String employeeName)
dari kelas DAO. Seperti yang Anda lihat, ada barisConnection myConnection = null;
tapi saya tidak mendapatkan koneksi dari Sumber Data. Jadi metode ini mengembalikan daftar kosong. Menambahkan baris berikutmyConnection = dataSource.getConnection();
ke dalam blok coba memecahkan masalah. - person Ivan T   schedule 15.12.2016