


Templat Golang: Menggunakan FuncMap dengan html/template menghasilkan respons kosong
Apabila menggunakan enjin templat Golang, kami sering memerlukan fungsi tersuai untuk mengendalikan beberapa logik tertentu. Walau bagaimanapun, apabila kami menggabungkan fungsi tersuai dengan FuncMap dalam pakej html/template, kami mungkin menghadapi masalah pelik: respons kosong dihasilkan. Editor PHP Banana akan memperkenalkan punca masalah ini dalam artikel ini dan menyediakan penyelesaian untuk memastikan kami boleh menggunakan enjin templat Golang dengan betul.
Kandungan soalan
Menggunakan html/templat Saya cuba mengisi medan tarikh dalam bentuk HTML menggunakan medan jenis template.FuncMap
从 time.Time
tetapi ia tidak berfungsi untuk saya.
Kod berikut berfungsi,
type Task struct { ID int ProjectID int Description string StartDate time.Time Duration float32 } type ProjectTaskData struct { ProjectID int ProjectName string TaskDetails Task FormattedStartDate string // this field is a hack/workaround for me }
Fungsi main
saya yang dipangkas,
func main() { db := GetConnection() r := mux.NewRouter() // other handlers here are removed r.HandleFunc("/project/{project-id}/add-task", AddTask(db)) r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("static/")))) http.ListenAndServe(":8080", r) }
AddTask
fungsi,
func AddTask(db *sql.DB) func(w http.ResponseWriter, r *http.Request) { //tmpl := template.Must(template.New("").Funcs(template.FuncMap{ // "startdate": func(t time.Time) string { return t.Format("2006-01-02") }, //}).ParseFiles("static/add_task.html")) tmpl := template.Must(template.ParseFiles("static/add_task.html")) return func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) projectID, err := strconv.Atoi(vars["project-id"]) if err != nil { log.Fatal(err) } var projectName string var projectStartDate time.Time err = db.QueryRow(`select name, start_date from projects where id = ?`, projectID).Scan(&projectName, &projectStartDate) switch { case err == sql.ErrNoRows: log.Printf("No project with id %d\n", projectID) return case err != nil: log.Fatalf("Query error: %v\n", err) default: log.Printf("Got project %v with id %d\n", projectName, projectID) } if r.Method != http.MethodPost { data := ProjectTaskData{ ProjectID: projectID, ProjectName: projectName, TaskDetails: Task{ ProjectID: projectID, Description: "", StartDate: projectStartDate, Duration: 1, }, FormattedStartDate: projectStartDate.Format(time.DateOnly), } tmpl.Execute(w, data) return } // rest of code handling the post action here http.Redirect(w, r, "/project/"+fmt.Sprint(projectID)+"/tasks", http.StatusFound) } }
Dalam add_task.html
, jika saya meletakkan pemegang tempat berikut, apabila saya mengklik pada http://localhost:8080/project/1/add-task, ia dapat mengisi tarikh mula,
<input type="date" id="start_date" name="start_date" value="{{.FormattedStartDate}}">
Walau bagaimanapun, jika saya menggantikan baris pertama berikut dalam AddTask(),
tmpl := template.Must(template.ParseFiles("static/add_task.html"))
Dengan yang di bawah,
tmpl := template.Must(template.New("").Funcs(template.FuncMap{ "startdate": func(t time.Time) string { return t.Format("2006-01-02") }, }).ParseFiles("static/add_task.html"))
Jika saya menukar add_task.html seperti berikut,
<input type="date" id="start_date" name="start_date" value="{{.TaskDetails.StartDate | startdate}}">
Apabila saya menekan http://localhost:8080/project/1/add-task saya mendapat respons kosong (tetapi saya mendapat 200 OK)
Saya juga menyebut soalan berikut tanpa berjaya,
https://stackoverflow.com/a/35550730/8813473
Penyelesaian
Seperti yang @icza sebutkan dalam ulasan, menerima ralat daripada Template.Execute()
mendedahkan isu itu.
Saya mendapat ralat,
template: "" 是一个不完整或空的模板
Rujuk jawapan https://www.php.cn/link/949686ecef4ee20a62d16b4a2d7ccca3, saya tukar template .New("")
调用 template.New("add_task.html")
untuk menyelesaikan masalah.
Kod akhir adalah seperti berikut,
tmpl := template.Must(template.New("add_task.html").Funcs(template.FuncMap{ "startdate": func(t time.Time) string { return t.Format("2006-01-02") }, }).ParseFiles("static/add_task.html"))
Atas ialah kandungan terperinci Templat Golang: Menggunakan FuncMap dengan html/template menghasilkan respons kosong. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Sejak penubuhannya pada tahun 2009, Bitcoin telah menjadi peneraju dalam dunia mata wang kripto dan harganya telah mengalami turun naik yang besar. Untuk memberikan gambaran keseluruhan sejarah yang komprehensif, artikel ini menyusun data harga Bitcoin dari 2009 hingga 2025, meliputi peristiwa pasaran utama, perubahan dalam sentimen pasaran dan faktor penting yang mempengaruhi pergerakan harga.

Bitcoin, sebagai mata wang kripto, telah mengalami turun naik pasaran yang ketara sejak penubuhannya. Artikel ini akan memberikan gambaran keseluruhan harga sejarah Bitcoin sejak kelahirannya untuk membantu pembaca memahami arah aliran harga dan detik pentingnya. Dengan menganalisis data harga sejarah Bitcoin, kami dapat memahami penilaian pasaran terhadap nilainya, faktor yang mempengaruhi turun naiknya, dan menyediakan asas untuk keputusan pelaburan masa hadapan.

Sejak penciptaannya pada tahun 2009, harga Bitcoin telah mengalami beberapa turun naik utama, meningkat kepada $ 69,044.77 pada November 2021 dan jatuh ke $ 3,191.22 pada Disember 2018. Sehingga Disember 2024, harga terkini telah melebihi $ 100,204.

Harga USD Bitcoin masa nyata Faktor yang menjejaskan harga bitcoin Petunjuk untuk meramalkan harga bitcoin masa depan Berikut adalah beberapa maklumat penting mengenai harga Bitcoin pada 2018-2024:

Kaedah penyesuaian simbol saiz semula dalam CSS bersatu dengan warna latar belakang. Dalam perkembangan harian, kita sering menghadapi situasi di mana kita perlu menyesuaikan butiran antara muka pengguna, seperti menyesuaikan ...

Bagaimana untuk mencapai kesan lengkung 45 darjah segmen? Dalam proses melaksanakan segmen, bagaimana membuat sempadan yang betul berubah menjadi lengkung 45 darjah ketika mengklik butang kiri, dan titik ...

Ya, pengeluaran halaman H5 adalah kaedah pelaksanaan penting untuk pembangunan front-end, yang melibatkan teknologi teras seperti HTML, CSS dan JavaScript. Pemaju membina halaman H5 yang dinamik dan berkuasa dengan bijak menggabungkan teknologi ini, seperti menggunakan & lt; kanvas & gt; Tag untuk menarik grafik atau menggunakan JavaScript untuk mengawal tingkah laku interaksi.

Komuniti Q & A Teknikal di Era CHATGPT: Strategi Respons Segmentfault StackOverflow ...
