Salesforce: 关于点击自定义的save按钮保存成功之后跳转回当前页面,但是保存成功信息没有带回来的解决方案

刚开始接触salesforce开发没多久,特写此博客和大家一起共同学习,如有错误或者可以改进的地方,欢迎留言~

  前两天在做开发的时候发现了一个问题,当在点击自定义的save按钮保存成功之后,跳转回当前页面,保存成功的信息却没带回来,撸主找了好久,发现是如下原因:

    1.当我们点击save按钮之后需要跳转回当前页面,但是跳转之后的页面已经不是原理的页面了,是经过刷新一次,重新加载了数据库中的内容的新页面。

    2.发现罪魁祸首是使用了 prf.setRedirect(true); 

相当于重新走了一遍服务器,所以我们的ApexPages.Message(ApexPages.Severity.CONFIRM, ‘保存成功!’)就没有带过来,消失啦。

那到底肿么办呢???

撸主想了个办法,在页面跳转的时候把message放到页面链接里面,然后刷新页面的时候再取出来不就行啦么!!!我好聪明!!!

如下是代码sample:

save方法:

PageReference prf = new PageReference('/apex/ACC_AddQuoteLineItem?quoteId='+quoteId);
prf.getParameters().put('SucMessage',Label.ACC_Save_Successfully);
prf.setRedirect(true);
return prf;

再次加载页面调用的构造方法:

if(ApexPages.CurrentPage().GetParameters().Get('SucMessage') != null){
            String SucMessage = String.valueOf(ApexPages.CurrentPage().GetParameters().Get('SucMessage')); 
            ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.CONFIRM, SucMessage));
}

微信扫码订阅
UP更新不错过~
关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
每每听到客户抱怨自己修改和很久的数据由于自己的一个误操作而丢失时,总想让web页面也有像window窗体一样具有提示保存的功能。所以,经过一段时间的研究以后终于实现了这个功能!============ checksave.js =======================<!-- The JavaScript is used in show a message to prompt user to save data.--><script language="JScript">function window::onbeforeunload(){if (typeof(document.all[‘txtCheckFlag‘]) != "undefined") // to detect whether this page need prompt the save message!{ if (event.clientY<0 && event.clientX>document.body.clientWidth-20 || event.clientY<0 && event.clientX<20 || event.altKey || event.clientY>document.body.clientHeight) event.returnValue="If you have modified some data, you need push the save button to save them. Do you want to save?";}}</script><script language=javascript><!-- function checksave(arg){if (typeof(document.all[‘txtCheckFlag‘]) != "undefined") // to detect whether this page need prompt the save message! { // If need document.all["txtCheckFlag"].value=arg; document.forms(0).submit(); return false; }else // If does not need { window.location=arg; return true; }}function showsavemessage(arg){if (window.confirm("Save Change?")) { document.all["txtSave"].value="1"; document.forms(0).submit(); return false; }else { if (arg == ".") { return true; } else { window.location=arg; return false; } }}//--></script>======== test.aspx ===============<%@ Page Language="vb" AutoEventWireup="false" Codebehind="test.aspx.vb" Inherits="Test.test" smartNavigation="True" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> <HEAD> <title>test</title> <meta content="Microsoft Visual Studio.NET 7.0" name="GENERATOR"> <meta content="Visual Basic 7.0" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> <!--#include file="checksave.js"--> </HEAD> <body MS_POSITIONING="GridLayout" onload="pageload()"> <form id="Form1" method="post" runat="server"> <a onclick="javascript:return checksave(this.href)" href=DownloadFiles1DownloadFiles1DownloadFiles1"TestNoNeedCheck.aspx">sohu</a><BR> <a onclick="javascript:return checksave(this.href)" href=DownloadFiles1DownloadFiles1DownloadFiles1"TestNoNeedCheck.aspx">yahoo</a><BR> <a onclick="javascript:return checksave(this.href)" href=DownloadFiles1DownloadFiles1DownloadFiles1"TestNoNeedCheck.aspx">MTR</a> <asp:textbox id="txtCheckFlag" style="Z-INDEX: 101; LEFT: 213px; POSITION: absolute; TOP: 91px" runat="server"></asp:textbox><asp:textbox id="txtSave" style="Z-INDEX: 102; LEFT: 211px; POSITION: absolute; TOP: 139px" runat="server"></asp:textbox><asp:linkbutton id="LinkButton1" style="Z-INDEX: 103; LEFT: 150px; POSITION: absolute; TOP: 204px" runat="server">LinkButton</asp:linkbutton> <asp:Button id="Button1" style="Z-INDEX: 104; LEFT: 238px; POSITION: absolute; TOP: 271px" runat="server" Text="Button"></asp:Button></form> </body></HTML>======== test.aspx.vb ===============Public Class test Inherits System.Web.UI.Page Protected WithEvents txtSave As System.Web.UI.WebControls.TextBox Protected WithEvents LinkButton1 As System.Web.UI.WebControls.LinkButton Protected WithEvents Button1 As System.Web.UI.WebControls.Button Protected WithEvents txtCheckFlag As System.Web.UI.WebControls.TextBox#Region " Web Form Designer Generated Code " ‘This call is required by the Web Form Designer. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init ‘CODEGEN: This method call is required by the Web Form Designer ‘Do not modify it using the code editor. InitializeComponent() End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ‘Put user code to initialize the page here txtSave.Style.Item("display") = "none" txtCheckFlag.Style.Item("display") = "none" LinkButton1.Attributes("onclick") = "javascript:return checksave(this.href)" ‘ Page.RegisterStartupScript("Prompt", "<script language=""javascript"">function pageload() { }</script>") End Sub Private Sub txtCheckFlag_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCheckFlag.TextChanged Session("URL") = txtCheckFlag.Text If checkdata() Then ‘Session("Data") = Me.Data If InStr(txtCheckFlag.Text, "__doPostBack") > 0 Then Page.RegisterStartupScript("warning", "<script language=""javascript"">function pageload() {if (showsavemessage(‘.‘)) " + Session("URL") + ";}</script>") Else Page.RegisterStartupScript("warning", "<script language=""javascript"">function pageload() {showsavemessage(‘" + Session("URL") + "‘);}</script>") End If Else If InStr(txtCheckFlag.Text, "__doPostBack") > 0 Then Session("URL") = Replace(txtCheckFlag.Text, "javascript:", "") Page.RegisterStartupScript("warning", "<script language=""javascript"">function pageload() {" + Session("URL") + ";}</script>") Else If InStr(txtCheckFlag.Text, "javascript:") > 0 Then Session("URL") = Replace(txtCheckFlag.Text, "javascript:", "") Page.RegisterStartupScript("Redirect", "<script language=""javascript"">function pageload() {" + Session("URL") + ";}</script>") Else Page.RegisterStartupScript("Redirect", "<script language=""javascript"">function pageload() {window.location=‘" + Session("URL") + "‘;}</script>") Response.End() End If End If End If End Sub Private Sub txtSave_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSave.TextChanged If savedata() = False Then txtSave.Text = "" txtCheckFlag.Text = "" Exit Sub End If Me.ViewState("flag") = True If InStr(txtCheckFlag.Text, "__doPostBack") > 0 Then Page.RegisterStartupScript("TxtSave", "<script language=""javascript"">" + Session("URL") + "</script>") Else If InStr(txtCheckFlag.Text, "javascript:") > 0 Then Session("URL") = Replace(txtCheckFlag.Text, "javascript:", "") Page.RegisterStartupScript("TxtSave", "<script language=""javascript"">function pageload() {" + Session("URL") + ";}</script>") Else Page.RegisterStartupScript("Redirect", "<script language=""javascript"">function pageload() {window.location=‘" + Session("URL") + "‘;}</script>") ‘Response.Redirect(Session("URL")) ‘Response.End() End If End If txtSave.Text = "" txtCheckFlag.Text = "" End Sub Private Function checkdata() As Boolean ‘check whether user really had modified the data Return True End Function Private Function savedata() As Boolean ‘do save data here! Return True End Function Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click If Me.ViewState("flag") = True Then Page.RegisterStartupScript("Redict", "<script language=""javascript"">function pageload() {window.location=‘TestNoNeedCheck.aspx‘;}</script>") Else Page.RegisterStartupScript("Redict", "<script language=""javascript"">function pageload() {window.location=‘TestNoNeedCheck.aspx‘;}</script>") End If End SubEnd Class

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长今先森

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值