我有一系列模板,其中使用通用 map[string]string
值。类似的东西
<h1> You sent in {{.Field1}} and {{.Field2}} </h1>
有效负载将为:{"Field1": "Value1", "Field2": "Value2"}
调用为:err := tmpl.Execute(w, data);//数据是map[string]string并从有效负载中解码
我无法将data
转换为struct
,因为模板和有效负载是在运行时确定的。这些模板是由业务用户创建的,我不想为每个模板创建一个类型并在每次有新模板时更改后端。因此希望保留类似于map[string]string的解决方案。
上述设计的问题在于,当模板中使用的字段未在运行时传入时。当我执行模板时,缺失的字段在模板中返回一个空字符串。如果发生这种情况,我想返回一个错误。
所以,我想知道是否有办法让模板在 map 查找失败时返回解析错误?或者有没有办法将带有运行时错误检查的通用 struct
值传递给允许动态负载的模板?
谢谢!
最佳答案
使用"missingkey=error"选项。
tmpl := template.Must(template.New("").Option("missingkey=error").Parse(
`<h1> You sent in {{.Field1}} and {{.Field2}} </h1>`))
关于go - 本地图查找失败时从模板返回解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36339219/