apex:actionFunction和Database.Update()非预期的页面刷新

时间:2012-08-10 00:29:53

标签: ajax salesforce apex-code visualforce

所以,我一直在为visualforce页面制作一个“编辑项目”模式,允许用户编辑对象的子组件,并刷新页面。就目前而言,有一个包含父对象ID的URL参数。代码的结构与此类似:

<apex:form id="edit-modal">
     <!-- Modal Content-->
     <apex:actionFunction action="{!updateModalObject}" name="updateModalObject">

     </apex:actionFunction> 
</apex:form>

当用户在模态中预设“保存”按钮时,调用上述动作功能。控制器中的类如下所示:

public PageReference updateModalObject(){        
    database.update(modalObject); 

    return null;
}

当此操作完成时,页面会刷新,同时丢弃URL参数并导致整个事情发生故障。我不确定代码的哪一部分导致刷新,如果它是动作函数或者它是控制器中的更新。

1 个答案:

答案 0 :(得分:1)

你说:

  

当用户提出“保存”按钮时...

我认为这会导致页面刷新。你是否使用没有reRender标签的命令按钮?解决方案可能如下所示:

试试这个技巧 - 在执行JavaScript函数后添加return false:

<apex:commandButton value="Save" onclick="updateModalObject(); return false;"/>

避免页面重新加载的其他方法是添加虚拟reRender标记:

<apex:commandButton value="Save" onclick="updateModalObject()" reRender="none" />

<apex:actionFunction action="{!updateModalObject}" name="updateModalObject"  reRender="none">

您必须重新呈现“某些内容”以避免重新加载页面。否则,命令按钮将重新加载整个页面。在我们的例子中,我们将重新改名“没有”。