Bạn cần hiểu rằng một servlet chạy trong máy chủ web, không phải trong trình duyệt web và JS đó chạy trong trình duyệt web, không phải trong máy chủ web. Cách thực hành thông thường là để servlet chuyển tiếp yêu cầu tới một tệp JSP mà lần lượt tạo ra mã HTML/CSS/JS được gửi đến trình duyệt web bởi máy chủ web. Cuối cùng, tất cả mã HTML/CSS/JS đó được thực thi trong trình duyệt web.
Để đạt được yêu cầu chức năng (hơi lạ, tbh) của bạn, chỉ cần để JSP được chuyển tiếp có điều kiện trả về cuộc gọi tập lệnh cụ thể. Ví dụ như sau với JSTL<c:if>
, giả định rằng bạn đã thu thập và thiết lập các lỗi như ${errors}
ở định dạng mảng JSON:
<c:if test="${not empty errors}">
<script>displayErrors(errors);</script>
</c:if>
Hoặc hãy JSP gán nó như là một biến JS và để JS xử lý nó hơn nữa. Một cái gì đó như:
<script>
var errors = ${errors};
if (errors.length) {
displayErrors(errors);
}
</script>
Đối với yêu cầu là kỳ lạ, nếu bạn buộc phải sử dụng JS để hiển thị các thông điệp, mà chỉ có thể có nghĩa là bạn đang sử dụng một cái gì đó alert()
hay. Điều này là rất 90 và không thân thiện với người dùng. Chỉ cần để JSP tạo ra HTML cho phù hợp rằng chúng được đặt bên cạnh các trường nhập liệu, hoặc trong một danh sách ở trên cùng của biểu mẫu. Our servlets wiki page có ví dụ về hello world thực hiện chính xác như thế.
Câu hỏi của bạn không có ý nghĩa. JavaScript được thực thi trong trình duyệt của người dùng. Một servlet được thực thi trên máy chủ. Suy nghĩ lại về những gì bạn thực sự muốn làm. –
@JBNizet Tôi nghĩ chúng ta có thể gọi JS từ servlet. Chúng tôi có thể gửi phản hồi cho trình duyệt và trong chính bản thân đó, chúng tôi có thể tạo tập lệnh để gọi. – Ved