昨天给别人改一个salesforce页面,因为页面渲染文件太大了,所以需要改成一个去掉apex:xxx控件,全程由html改写的页面,然而功能还不能少。由于apex控件有各种好处,改起来还是麻烦了些,然后我在改了页面之后就遇到了如题的问题。
这个问题的起因是原来页面为了在js里调用一个controller的方法,使用了apex:actionFunction控件,为了又去掉apex控件,又能调用方法,我把后台调用的方法加上了@RemoteAction, 方法也相应的改成了static, 然后问题来了,在这个方法里,用到了```ApexPages.currentPage().getParameters().get('demo')```这样的方法。debug了一下,发现在ApexPages.currentPage()这一步其实就已经得到一个空值,所以就会导致报错。查阅了多番资料,终于发现是由于方法是static, 加载的前后顺序导致除了这个错,可是我确实要得到url传过来的参数,一时很苦恼。
在看了很多资料,多番尝试之后,终于解决了这个问题,在页面上获取,并通过js方法传递参数。最终通过在页面js里使用 ``` var demo = {!$CurrentPage.parameters.demo}; ``` 取到值。
你以为这就完了吗,大错特错,仔细试一下,如果url里面没有传递demo过来,页面会报错!因为这个值如果没有传,它就彻底什么都不返回,渲染的结果是 var demo = ; 赤果果的语法错误!!!不能忍,尝试了各种办法,终于发现了最简单的解决方案``` var demo = '{!$CurrentPage.parameters.demo}';``` 终于解决了这些问题。
这次改页面的过程,个人总结就是,遇到问题,翻阅各种文档,然后多番尝试,基本上都能解决。虽然这次改页面各种波折,但是感觉还是学到了东西。