Trong ứng dụng web JSF 1.2 của tôi, tôi có một trang có số <h:commandButton>
gọi phương thức hành động trên bean sao lưu. Hành động này sẽ khiến dữ liệu bị xóa/thay thế trong cơ sở dữ liệu, vì vậy tôi muốn tránh bất kỳ tình huống nào mà người dùng vô tình nhấp vào nút lệnh.JSF - Làm cách nào để triển khai JavaScript "Bạn có chắc chắn không?" nhắc cho <h: commandButton>
Tôi muốn thực hiện đơn giản "Bạn có chắc chắn không?" nhắc với tùy chọn "Có/Không" hoặc "OK/Hủy" bằng JavaScript. Tôi không tuyệt vời với JavaScript và tôi chưa bao giờ trộn JavaScript với JSF trước đây. Bất cứ ai có thể cung cấp một đoạn mã để cho tôi thấy làm thế nào để thực hiện điều này?
Đây là mảnh của trang JSP của tôi, nơi tôi công bố vào nút lệnh:
<h:commandButton
id="commandButtonAcceptDraft"
title="#{bundle.tooltipAcceptDraft}"
action="#{controller.actionReplaceCurrentReportWithDraft}"
image="/images/checkmark.gif">
</h:commandButton>
SOLUTION:
Các giải pháp được cung cấp bởi BalusC chỉ làm việc tốt. Tôi cũng muốn đề cập đến việc dễ dàng sử dụng văn bản từ một gói tài nguyên dưới dạng văn bản nhắc. Trên trang của tôi, tôi tải các gói tài nguyên với một yếu tố như thế này:
<f:loadBundle basename="com.jimtough.resource.LocalizationResources" var="bundle" />
Các <f:loadBundle>
phải bên <f:view>
của bạn. Sau đó, tôi thêm mã do BalusC cung cấp vào phần tử nút lệnh của tôi nhưng thay thế một chuỗi từ gói tài nguyên của tôi cho 'Bạn có chắc chắn không?' văn bản, như thế này:
<h:commandButton
id="commandButtonAcceptDraft"
title="#{bundle.tooltipAcceptDraft}"
action="#{controller.actionReplaceCurrentReportWithDraft}"
image="/images/checkmark.gif"
onclick="return confirm('#{bundle.confirmationTextAcceptDraft}')">
</h:commandButton>
Các dòng trong tập tin tài nguyên tiếng Anh của tôi (chỉ là một tập tin văn bản đơn giản với các cặp khóa/giá trị) trông như thế này:
# text displayed in user prompt when calling confirm()
confirmationTextAcceptDraft=This will overwrite the current report and cannot be undone. Are you sure?
Giải pháp @CoolBeans là chính xác trong trường hợp của tôi vì nếu không thì hành động sẽ tải lại trang.Tôi đang sử dụng MyFaces và BootsFaces – MitchBroadhead
@MitchBroadhead Sau đó, thư viện JSF hoặc thư viện thành phần được đề cập tạo thuộc tính onclick theo cách không chính xác. Chỉ cần nhìn vào đầu ra HTML được tạo ra và báo cáo vấn đề cho nhà phát triển có trách nhiệm. – BalusC
tôi đã gửi một lỗi tại BootsFaces và Stephan đã khắc phục sự cố ngay bây giờ – MitchBroadhead