所以,我一直在为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参数并导致整个事情发生故障。我不确定代码的哪一部分导致刷新,如果它是动作函数或者它是控制器中的更新。
答案 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">
您必须重新呈现“某些内容”以避免重新加载页面。否则,命令按钮将重新加载整个页面。在我们的例子中,我们将重新改名“没有”。