Я добавил пользовательскую страницу VF на страницу сведений о котировках. введите здесь описание изображения

И на этой странице VF есть кнопка.

Ожидаемый: он должен обновить всю страницу.

Реальный: обновляется только страница VF, а не вся страница.

Страница vf:

<apex:page standardController="Quote"  extensions="CustomUnlockQuote" action="{!checkForUser}">
    
    <apex:outputText rendered="{!showButtons}" id="alert">
        <script>
        window.top.location='/{!Quote.id}';
        
        </script>
    </apex:outputText>
    <apex:form >
        <apex:outputPanel rendered="{!showButton}"></apex:outputPanel>
        <apex:commandButton action="{!unlockRecords}" value="testing" />
    </apex:form>
</apex:page>
0
sfdcfox 7 Май 2021 в 20:57

1 ответ

Лучший ответ

Командная кнопка заставит страницу обновиться, но сценарий не обязательно запустится. Возможно, вы захотите сделать что-то вроде этого:

<apex:page standardController="Quote"  extensions="CustomUnlockQuote" action="{!checkForUser}">
    <apex:form id="form">
        <script>
            function possibleRedirect() {
                if({!showButtons}) {
                    window.top.location='/{!Quote.id}';
                }
            }
        </script>
        <apex:commandButton action="{!unlockRecords}" value="testing" reRender="form" oncomplete="possibleRedirect()" />
    </apex:form>
</apex:page>

Возможно, потребуется дополнительная работа.

Мы используем reRender, чтобы избежать полного обновления VF страницы, которое отменяет все запущенные скрипты (включая наше предполагаемое перенаправление), а сам скрипт находится внутри формы, поэтому он обновляется, когда переменная showButtons устанавливается из false в true.

0
sfdcfox 7 Май 2021 в 21:03
Спасибо @sfdcfox, reRender сделал свою работу
 – 
Sahil Gupta
8 Май 2021 в 06:38