当我调用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)
。
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
您试图在template / html认为不安全的地方输出HTML(例如,在HTML元素内部,如下所示:
<option {{ printSelected }}>
我找不到任何方法可以确信它是安全的(包括返回template.HTML而不是字符串);我发现的唯一替代方法是重写模板,在此示例中,请使用bool输出:
<option {{ if printSelected }}selected{{ end }}>
- 3 回答
- 0 关注
- 331 浏览
添加回答
举报
0/150
提交
取消