亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果值為 0 則輸入值為空,否則值為

如果值為 0 則輸入值為空,否則值為

Go
繁花不似錦 2021-09-27 10:37:31
問題: 我創建了一個簡單的表單,其中有一個輸入字段“num”。提交后,我想在同一個輸入字段中顯示 num 的值,換句話說,要保留該字段中的輸入。如果該值設置為 0,那么我想忽略它。我可以用多種語言完成,但我不確定如何在 Golang 中完成。我當前的模板文件有,<input type="text" placeholder="foo" name="bar" value="{{if gt .N 0 }} {{.N}} {{end}} "/> 服務器文件包含:data := &listOfReport {        R: r,        I: i,        N: n}listTmpl := template.Must(template.New("list_tmpl").Parse(string(report.Template["xxx.tmpl"])))if err := listTmpl.Execute(w, data); err != nil {    http.Error(w, fmt.Sprintf("Error rendering template %v", err), 500)}另一個想法是使 N 成為字符串,因此在服務器文件中將其設為 '' 或值。但這實際上破壞了變量的名稱/目的。有沒有更好的方法來做到這一點?有沒有更好的方法可以直接從模板訪問 GET 參數?請注意,N 的值最初是從 GET 變量中獲取的。
查看完整描述

2 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

沒有標準/內置方法可以從模板中獲取任何請求參數,您必須將其放入數據中。(您可以編寫一個為您執行此操作的函數,但這會導致丑陋的 hack。)

我不明白你的解決方案有什么問題。


查看完整回答
反對 回復 2021-09-27
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

我采取類似的方法,但使用結構。


type SignupForm struct {

    Name string

    Email string

    Etcera bool

}


// Type alias

type M map[string]interface{}


...


// In the handler that accepts your form

err := r.ParseForm()

if err != nil {

    // handle error

}


signup := SignupForm{}

err := decoder.Decode(signup, r.PostForm)

if err != nil {

    // handle error

}


// Store the 'saved' form contents somewhere temporary - 

// e.g.

//  - cookies (keep in mind the 4K browser limit)

//  - server side sessions (Redis; how I do it)

//  - db


// In the handler that renders your form

err := template.ExecuteTemplate(w, "form.html", M{

        "form": signup,

        "csrfToken": csrfToken,

        // and so on...

        })

請注意,無論您在何處存儲表單數據,都要確保它是臨時的。服務器端會話是理想的,因為您可以讓它們過期(如果您不想手動刪除它們)。


查看完整回答
反對 回復 2021-09-27
  • 2 回答
  • 0 關注
  • 329 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號