gpt4 book ai didi

go - 不显示 revel flash 消息

转载 作者:数据小太阳 更新时间:2023-10-29 03:20:45 26 4
gpt4 key购买 nike

我已经创建了一个带有默认骨架的 Revel Web 应用程序。

我创建了一个新的路由/ Action / View :

Controller Action :

func (c Ctrl1) Action3() revel.Result {
variable1 := "test1"
variable2 := "test2"
c.Flash.Error("Message")
return c.Render(variable1,variable2)
}

Action3.html:

{{set . "title" "Test"}}
{{template "header.html" .}}
{{template "flash.html" .}}
Hello: {{.variable1}}
{{template "footer.html" .}}

我第一次运行我的网络应用程序时,我看到了闪现消息。但是下次,如果我刷新页面,它就会消失!

我已经重新开始了 revel

谢谢

最佳答案

我不熟悉 revel,但是消息“flashing”通常在您需要一些用户通信以通过重定向传递时使用。 godoc似乎也完全针对该用例描述了它。

如果您直接在此请求处理程序中呈现模板,您可能不应该使用 c.Flash。我对正在发生的事情的猜测是,revel 将只显示带有请求的闪现消息 received。调用 c.Flash.Error 设置 cookie 中的字段,这意味着它将被发送回调用者,而不是模板。在下一个 呈现器中,它将读取调用方发送回服务器的 cookie,其中将包含此 flash 消息。但是,显然,设置新的 flash 消息会替换旧的,导致它(再次)将其发送给调用者而不是模板。

好消息是,只有一种方法可以让您的消息出现在页面上,而且您几乎可以肯定地将您的消息硬塞在那里:模板数据!不要调用 c.Flash.Error,而是使用通常的机制发送消息。在这种情况下,假设您的 flash.html 模板包含如下内容:

{{ if .flash.error }}
<div class="error">{{ .flash.error }}</div>
{{ end }}

您应该能够通过将 c.Flash.Error("Message") 行替换为以下内容来传递该数据:

c.ViewArgs["flash"] = map[string]string{"error": "Message"}

关于go - 不显示 revel flash 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54380070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com