为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我在Go HTML模板输出中看到ZgotmplZ?

为什么我在Go HTML模板输出中看到ZgotmplZ?

Go
慕田峪7331174 2021-05-16 09:08:07
当我调用Go模板函数以输出HTML时,它将显示ZgotmplZ。样例代码:http://play.golang.org/p/tfuJa_pFkmpackage mainimport (    "html/template"    "os")func main() {    funcMap := template.FuncMap{        "printSelected": func(s string) string {            if s == "test" {                return `selected="selected"`            }            return ""        },        "safe": func(s string) template.HTML {            return template.HTML(s)        },    }    template.Must(template.New("Template").Funcs(funcMap).Parse(`    <option {{ printSelected "test" }} {{ printSelected "test" | safe }} >test</option>    `)).Execute(os.Stdout, nil)}输出:<option ZgotmplZ ZgotmplZ >test</option>
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

<img src="{{myfunction}}">在myfunction返回编码图像的地方也遇到了类似的问题。

最后,我解决了它,而不是返回字符串函数template.URL(mystring)


查看完整回答
反对 回复 2021-05-31
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您试图在template / html认为不安全的地方输出HTML(例如,在HTML元素内部,如下所示:

<option {{ printSelected }}>

我找不到任何方法可以确信它是安全的(包括返回template.HTML而不是字符串);我发现的唯一替代方法是重写模板,在此示例中,请使用bool输出:

<option {{ if printSelected }}selected{{ end }}>


查看完整回答
反对 回复 2021-05-31
  • 3 回答
  • 0 关注
  • 331 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信