Visualforce将Javascript变量值传递给控制器​​

时间:2018-03-28 19:56:16

标签: javascript visualforce apex

我正在使用包含一些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变量的值传递给我的控制器。任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

<apex:param> id="LightningParam" name="LightningParam" value="" />

此行应该会给您一个错误。尝试使用

<apex:param id="LightningParam" name="LightningParam" value="" />

代替。