Я работаю над страницей Visualforce, содержащей некоторый javascript. Страница имеет расширение контроллера. В течение последних нескольких дней я исследовал, как передать значение переменной javascript на моей странице VF в контроллер Apex, где мне нужно использовать это значение для выполнения некоторых действий. Ничто из того, что я пробовал, не работает, хотя я видел несколько подобных примеров кода, который должен делать то, что я пытаюсь сделать. Пожалуйста, помогите, потому что я схожу с ума.
У меня есть переменная javascript на моей странице visualforce, которая называется inLightning. Когда загружается страница VF, inLightning = true или false в зависимости от того, находится ли текущий пользователь в пользовательском интерфейсе Lightning или в классическом пользовательском интерфейсе. На странице VF есть другой javascript, который возвращает это значение и заполняет мою переменную inLightning. Я знаю, что эта часть работает. Мне нужно сообщить моему контроллеру Apex, находится ли текущий пользователь в Lightning или Classic, поэтому я пытаюсь передать значение inLightning моему контроллеру следующим образом:
У меня есть такая функция javascript, где я передаю значение моей переменной inLightning. К моменту вызова этой функции переменная уже имеет значение true или false.
function getValue(inLightning)
{
passValue(inLightning);
}
Теперь на моей странице визуальной силы я использую apex:actionFunction с apex:param, чтобы передать это моему контроллеру следующим образом:
<apex:form>
<apex:actionFunction name="passValue" action="{!UIValue}" immediate="true">
<apex:param> id="LightningParam" name="LightningParam" value="" />
</apex:actionFunction>
</apex:form>
В моем расширении контроллера я включил небольшой метод с именем UIValue, например:
public void UIValue()
{
String value = ApexPages.currentPage().getParameters().get('LightningParam');
system.debug('string value is '+value);
}
Всякий раз, когда я загружаю страницу visualforce, функция действия не работает, и метод контроллера UIValue не работает. Когда страница загружается, и я просматриваю свой журнал отладки, моего оператора system.debug выше нет в моем журнале. По-видимому, мой метод UIValue не работает.
Я не знаю, что делать дальше. Я не хочу делать событие щелчка или что-то в этом роде, чтобы это сработало. Когда загружается страница visualforce, я хочу запустить код, который передаст значение моей переменной javascript inLightning моему контроллеру. Любые предложения приветствуются.