JSF - 如何实现 JavaScript 的 “Are you sure?” 提示符<h:commandButton>

2022-09-03 04:22:39

在我的 JSF 1.2 web 应用程序中,我有一个页面,其中包含 在后备 Bean 上调用操作方法的页面。此操作将导致删除/替换数据库中的数据,因此我想避免用户意外单击命令按钮的任何情况。<h:commandButton>

我想使用JavaScript实现一个简单的“你确定吗?”提示,其中包含“是/否”或“OK/Cancel”选项。我对JavaScript并不擅长,我以前从未将JavaScript与JSF混合在一起。任何人都可以提供一个代码片段来演示如何实现这一点吗?

这是我的JSP页面的一部分,我在其中声明了命令按钮:

<h:commandButton 
    id="commandButtonAcceptDraft"
    title="#{bundle.tooltipAcceptDraft}" 
    action="#{controller.actionReplaceCurrentReportWithDraft}" 
    image="/images/checkmark.gif">
</h:commandButton>

溶液:

BalusC提供的解决方案工作得很好。我还想提一下,使用资源包中的文本作为提示文本很容易。在我的页面上,我加载了包含如下元素的资源包:

<f:loadBundle basename="com.jimtough.resource.LocalizationResources" var="bundle" />

必须在 您的 .然后,我将 BalusC 提供的代码添加到我的命令按钮元素中,但将资源包中的字符串替换为“您确定吗?”文本,如下所示:<f:loadBundle><f:view>

<h:commandButton 
    id="commandButtonAcceptDraft"
    title="#{bundle.tooltipAcceptDraft}" 
    action="#{controller.actionReplaceCurrentReportWithDraft}" 
    image="/images/checkmark.gif"
    onclick="return confirm('#{bundle.confirmationTextAcceptDraft}')">
</h:commandButton>

我的英语资源文件(只是一个具有键/值对的纯文本文件)中的行如下所示:

# text displayed in user prompt when calling confirm()
confirmationTextAcceptDraft=This will overwrite the current report and cannot be undone. Are you sure?

答案 1

使用 JavaScript confirm() 函数。它返回一个值。如果它返回 false,则按钮的默认操作将被阻止,否则它将继续。boolean

<h:commandButton onclick="return confirm('Are you sure?')" />

由于它已经返回,因此绝对没有必要将其包装在其他答案建议的a中。booleanif


答案 2

您可以将javascript添加到按钮的onclick中。

<h:commandButton  
    id="commandButtonAcceptDraft" 
    title="#{bundle.tooltipAcceptDraft}"  
    action="#{controller.actionReplaceCurrentReportWithDraft}"  
    onclick="return confirm('Are you sure?')"
    image="/images/checkmark.gif"> 
</h:commandButton>