doubiaokai4998 2013-02-08 03:51
浏览 218
已采纳

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

When I'm calling a Go template function to output HTML, it displays ZgotmplZ.

Sample code:

http://play.golang.org/p/tfuJa_pFkm

package main

import (
    "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)

}

Output:

<option ZgotmplZ ZgotmplZ >test</option>
  • 写回答

5条回答 默认 最新

  • dongwu3747 2013-02-10 10:11
    关注

    "ZgotmplZ" is a special value that indicates that unsafe content reached a CSS or URL context at runtime. The output of the example will be:

     <img src="#ZgotmplZ">
    

    You can add a safe and attr function to the template funcMap:

    package main

    import (
        "html/template"
        "os"
    )
    
    func main() {
        funcMap := template.FuncMap{
            "attr":func(s string) template.HTMLAttr{
                return template.HTMLAttr(s)
            },
            "safe": func(s string) template.HTML {
                return template.HTML(s)
             },
        }
    
        template.Must(template.New("Template").Funcs(funcMap).Parse(`
        <option {{  .attr |attr }} >test</option>
            {{.html|safe}}
         `)).Execute(os.Stdout,   map[string]string{"attr":`selected="selected"`,"html":`<option selected="selected">option</option>`})
    }
    

    The output will look like:

    <option selected="selected" >test</option>
    <option selected="selected">option</option>
    

    You may want to define some other functions which can convert string to template.CSS, template.JS, template.JSStr, template.URL etc.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集