简单的html / template不会打印所有值

时间:2019-07-15 15:02:55

标签: go

我正在学习html / template,并且正在努力解决一个非常简单的示例。我有一个模板,我要在其中打印html文档的标题和“ nav”元素的一项“ li”。当我运行代码时,它将标题放在模板中,而不是在导航中

main.go:

    package main

import (
    "net/http"
    "text/template"
)

var Page struct {
    nav   string
    Title string
}

func test(w http.ResponseWriter, r *http.Request) {
    Page.Title = "title"
    Page.Nav = "nav1"
    t, _ := template.ParseFiles("index.html")
    t.Execute(w, Page)
}

func main() {
    http.HandleFunc("/", test)
    http.ListenAndServe(":8080", nil)
}

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>{{.Title}}</title>
</head>
<body>
    <nav>
        <li>{{.nav}}</li>
    </nav>
</body>
</html>

输出:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>title</title>
</head>
<body>
    <nav>
        <li></li>
    </nav>
</body>
</html>

1 个答案:

答案 0 :(得分:-1)

用户Adrian解决了这个问题,供以后参考,问题是我在页面结构中使用小写字段,从而阻止了这些字段被html / template包导出和使用。

解决方案将页面struct中的nav字段重写为Nav