JSP 禁用displayTag中的超链接

ma8fv8wu  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(118)

我使用displayTag表装饰器来显示我的JSP页面。
该页有一个带列的表。其中一列是“活动”,它显示了2个超链接。一个是“支付”,另一个是“关闭”。每行将有5列“活动”,它们是最后一个带超链接的列。
这是JSP中的动作显示代码

<display-el:column property="action" sortable="false" title=" "
                            class="defaultTextCentered" style="width:6%" sortName="action" />

下面是我的装饰器代码

public String getAction() {
renderPayLink();
}

private void renderPayLink() {

            decoratedVal.append("<a href=\"javascript:newPopup('");
            decoratedVal.append(getContextPath());
            decoratedVal.append("/abc/taxPaymentInternal.html?iSeqNo=");
            decoratedVal.append(abc.getISeqNumber());
            decoratedVal.append("&iPeriod=");
            decoratedVal.append(abc.getIDate());
            decoratedVal.append("', 800, 700)\" title=\"Pay\">Pay</a>");
            decoratedVal.append("&nbsp;&nbsp;");

    }

所以点击链接时会打开一个弹出窗口,让用户输入夫妇的详细信息并提交。当这个弹出窗口打开时,我仍然可以后藤主浏览器,再次点击支付,刷新弹出窗口,让我再次提交信息。我必须通过禁用支付按钮来阻止这种情况发生,一旦我点击浏览器,然后打开弹出窗口。我如何才能做到这一点?
将pay替换为

decoratedVal.append("', 800, 700)\" title=\"Pay\" ");
            decoratedVal.append("onclick=\"this.setAttribute(");
            decoratedVal.append("\'style\', \'pointer-events:none; cursor:default;\'); this.setAttribute("); 
            decoratedVal.append("\'href\', \'\')\">Pay</a>");
            decoratedVal.append("&nbsp;&nbsp;");

从f12两柴取得“无法取得未定义或null指涉的属性'setAttribute'”错误。

<a title="Pay" onclick="this.setAttribute('style', 'pointer-events:none; cursor:default;'); this.setAttribute('href', '')" href="javascript:newPopup('/mei/invoicing/launchConfirmPaymentInternal.html?invoiceSeqNo=131946&amp;invoicePeriod=02-11-2017', 800, 700)">Pay</a>
nlejzf6q

nlejzf6q1#

一种方法是在单击<a>标记时将其禁用。

简单的解决方案:

您可以将此行替换为:
decoratedVal.append("', 800, 700)\" title=\"Pay\">Pay</a>");
与这些:

decoratedVal.append("', 800, 700)\" title=\"Pay\")
decoratedVal.append("onclick=\"this.setAttribute(")
decoratedVal.append("\'style\', \'pointer-events:none; cursor:default;\'); this.setAttribute(");
decoratedVal.append("\'href\', \'\')\">Pay</a>");

请注意,该链接将在页面刷新时再次可用。如果您需要其他方式激活它,则需要手动激活。

更优雅的解决方案:

如果您有样式表(如CSS文件),则可以在其中创建此类:

.disabledLink{
    pointer-events: none;
    cursor: default;
}

在链接标记的onclick事件中,将setAttribute替换为addClass('disabledLink')

sirbozc5

sirbozc52#

尝试自动链接<display:column autolink="false">

相关问题