Я использую декоратор таблицы 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(" ");
}
Таким образом, ссылка при нажатии откроет всплывающее окно, и пользователь сможет ввести информацию о паре и отправить. Пока это всплывающее окно открыто, я все равно могу зайти в основной браузер и снова щелкнуть на платной плате, которая обновляет всплывающее окно и заставляет меня повторно отправлять информацию. Я должен остановить это, отключив кнопку оплаты, как только я нажму в браузере, а затем открою всплывающее окно. Как мне этого добиться?
Заменена оплата на
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(" ");
Получение ошибки «Не удалось получить свойство setAttribute с неопределенной или нулевой ссылкой» из отладки f12.
<a title="Pay" onclick="this.setAttribute('style', 'pointer-events:none; cursor:default;'); this.setAttribute('href', '')" href="javascript:newPopup('/mei/invoicing/launchConfirmPaymentInternal.html?invoiceSeqNo=131946&invoicePeriod=02-11-2017', 800, 700)">Pay</a>