我正在使用包含一些javascript的Visualforce页面。该页面有一个控制器扩展名。在过去的几天里,我一直在研究如何将我的VF页面中的javascript变量值的值传递给Apex控制器,在那里我需要使用该值来做一些事情。即使我已经看到一些类似的代码示例应该做我想做的事情,但我没有尝试过工作。请帮忙,因为我要去疯狂。
我的visualforce页面中有一个名为inLightning的javascript变量。加载VF页面时,inLightning = true或false,具体取决于当前用户是在Lightning UI还是Classic UI中。 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页面加载时,我希望代码运行,将我的inLightning javascript变量的值传递给我的控制器。任何建议都表示赞赏。
答案 0 :(得分:0)
<apex:param> id="LightningParam" name="LightningParam" value="" />
此行应该会给您一个错误。尝试使用
<apex:param id="LightningParam" name="LightningParam" value="" />
代替。