我的模板最初是在应用程序启动时解析的(显然出于速度原因,这样)
var templates = template.New("template")
filepath.Walk("views", func(path string, info os.FileInfo, err error) error {
if strings.HasSuffix(path, ".html") {
templates.ParseFiles(path)
}
return nil
})
log.Println("Templates Parsed")
然后我将我的funcmaps添加到他们自己的函数中(因为我需要请求对象,所以我可以得到他们的会话数据)
func View(w http.ResponseWriter, r *http.Request, tmplN string, data interface{}) {
tmpl := templates.Funcs(template.FuncMap{
"username": func() string {
session := Sesh(r)
username := ""
if session.Values["username"] != nil {
username = session.Values["username"].(string)
}
return username
},
"authenticated": func() bool {
session := Sesh(r)
authenticated := false
if session.Values["authenticated"] != nil {
authenticated = session.Values["authenticated"].(bool)
}
return authenticated
},
})
err := tmpl.ExecuteTemplate(w, tmplN, data)
if err != nil {
log.Println("Error " + err.Error())
}
}
但是,如果我在解析模板之前没有进行Funcs
调用,它似乎无法正常工作,例如如果我尝试在我的register
模板中使用,请执行以下操作:
{{ define "register" }}
{{ template "_header" .}}
{{ if authenticated }}
// Call FuncMap function
{{ end }}
<br/>
<br/>
<br/>
<div class="row align-center">
<div class="large-4 columns text-center">
<div id="RegistrationFormComponent"></div>
</div>
</div>
{{ template "_footer" .}}
{{ end }}
我收到错误&#34;注册&#34;不存在,因为函数authenticated
在尝试解析时会抛出错误。有关如何使其按预期工作的任何信息都将非常感谢。
答案 0 :(得分:1)
所以我想出来了,但我会在这里留下这个答案,因为它似乎无法在任何地方回答,基本上我可以定义一个冗余的Ion.with(MainActivity.this)
.load("--URL TO POST JSON DATA--")
.setJsonObjectBody(params[0])
.asJsonObject()
.withResponse()
.setCallback(new FutureCallback<Response<JsonObject>>() {
@Override
public void onCompleted(Exception e, Response<JsonObject> result) {
if (result != null) {
if (result.getHeaders().code() == 200) {
Toast.makeText(MainActivity.this, "Login Success", Toast.LENGTH_SHORT).show();
} else if (result.getHeaders().code() == 401) {
Toast.makeText(MainActivity.this, "Invalid Username or password", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "Something wrong check connection !!!", Toast.LENGTH_SHORT).show();
}
}
}
});
,它模仿我将与会话一起使用的那个,以及只需将它们空白,然后我可以使用我的FuncMap
函数中的FuncMap
覆盖它们(在问题帖子中可见),如下所示:
view