Maison  >  Questions et réponses  >  le corps du texte

Comment ne pas supprimer les commentaires HTML dans le modèle HTML dans Gin Gonic

J'utilise Gin Gonic et un fichier modèle HTML.

Mon fichier modèle contient des commentaires HTML (multilignes) similaires à <!--Ceci est mon commentaire -->. Je souhaite conserver le contenu HTML dans la sortie renvoyée.

c.HTML(http.StatusOK, "static/templates/mytemplate.html", gin.H{
    "name": "World",
})

Question : Comment configurer le moteur de modèles ou c.HTML pour ne pas supprimer les commentaires HTML dans les modèles ?

Réponse plus détaillée

/static/templates/mytemplate.html :

<!DOCTYPE html>
<html lang="de">
<body>
<!--
这些行在输出中缺失。
-->
Hello World
</body>
</html>

Mon gestionnaire :

func NewRouter() *gin.Engine {
    router := gin.Default()
    // ... load templates from file system ...
    router.GET("/foo", fooHandler)
    return router
}
func fooHandler(c *gin.Context) {
    c.HTML(http.StatusOK, "static/templates/mytemplate.html", gin.H{
        "name": "World",
    })
}

Après l'édition, j'ai essayé d'ajouter l'annotation en tant que constante  :

{{"<!-- my comment goes here -->"}}

mais le tag est échappé comme

<!-- foo --> 


P粉193307465P粉193307465459 Il y a quelques jours589

répondre à tous(1)je répondrai

  • P粉237029457

    P粉2370294572023-07-19 16:31:03

    Je suppose que la raison pour laquelle les commentaires HTML sont supprimés est parce que je lis le modèle HTML sous forme de chaîne (au lieu de directement sous forme de fichier). La cause exacte reste indéterminée. Quoi qu'il en soit, la solution qui a fonctionné pour moi consistait à utiliser des espaces réservés dans le modèle.

    <!DOCTYPE html>
    <html lang="de">
    <body>
    {{ .myComment }}
    Hello World
    </body>
    </html>
    

    et passez le commentaire HTML lui-même en paramètre :

    const myHtmlComment string = `
    <!--
    these lines are (not) missing (anymore) in the output
    -->
    `
    func fooHandler(c *gin.Context) {
        c.HTML(http.StatusOK, "static/templates/mytemplate.html", gin.H{
            "name": "World",
            "myComment": template.HTML(myHtmlComment),
        })
    }
    

    Utilisez import "html/template" pour importer

    répondre
    0
  • Annulerrépondre