8
votes

Rendu des fichiers HTML dans Grails

J'ai regardé autour de moi, mais je n'ai pas trouvé un moyen de simplement inclure ou de rendu * .html fichiers dans Grails. Mon application doit G.SRENDER ou Modèles fournis en tant que fichiers HTML. Pour cela, comme nous le savons, les fichiers HTML doivent être convertis en _foo.gsp pour être rendu. Je suis totalement surpris de savoir pourquoi n'y a-t-il pas de support direct pour HTML ou y a-t-il un ??

Merci!


0 commentaires

6 Réponses :


23
votes

Une option évidente consiste simplement à renommer de vos fichiers HTML à partir de foo.html code> à _foo.gsp code> puis utilisez


3 commentaires

Merci Don! Cela ressemble à celui-ci (la deuxième partie, c'est-à-dire.). Je vais essayer d'essayer de mettre à jour mes résultats ici.


Don - je ne sais pas si vous verrez cela, l'espoir. J'ai essayé le code que vous avez posté, mais il semble que je dois spécifier un fichier relatif à mon répertoire racine de mon ordinateur, par exemple. "C: / Gradies2.0 / ..." Comment puis-je le faire fonctionner par rapport à mon répertoire Webroot, comme la vue Render fonctionne actuellement, à la recherche de fichiers dans le dossier de vue approprié?


@Ray Si vous mettez les fichiers HTML sous Web-APP, vous devriez pouvoir les récupérer à l'aide de g.resource



3
votes

Qu'est-ce que vous essayez d'accomplir?

  1. rendu html d'un contrôleur? Dans ce cas, tout ce que vous devriez avoir à faire est de rediriger l'utilisateur vers le fichier de votre contrôle.

    redirection (URI: "/ html / my.html")

  2. Utilisez des fichiers HTML au lieu des fichiers de modèle GSP? La chose est que Grails est une "convention sur la configuration" -platform et cela signifie que vous devrez faire certaines choses "The Grails Way". Les fichiers ont besoin du _ et du .gsp mais le nom peut être ce que vous préférez même s'il est plus facile lorsque vous utilisez le même nom que le contrôleur. Ce que vous gagnez de faire, c'est la connaissance que chaque développeur qui connaît des graps et que votre projet comprendra comment les choses sont liées ensemble et qui les aideront à démarrer rapidement.


2 commentaires

Dans un scénario dans le monde réel, pourrais-je dire que les choses ne fonctionnent pas selon des conventions rigides. Un cadre devrait au moins soutenir travailler avec ses éléments les plus fondamentaux - HTML dans ce cas. Répondre à votre question, nous avons une seule page SPG dans laquelle plusieurs jauges sont rendus. Chacune de ces jauges sont des modèles pure gsp , mais toutes les une fois de temps, ils ont besoin de rendre directement des fichiers HTML supprimés vers un dossier particulier /Some_folder/*.html dans le taglib que j'ai créé nous Besoin de basculer entre le rendu des modèles GSP ou des fichiers HTML. Toutes mes excuses pour ne pas effacer cette première.


Merci d'avoir refusé cela. La réponse de Don ressemble à un bon ajustement pour vous et honnêtement, votre besoin est suffisamment spécifique pour garantir son propre taglib personnalisé.



1
votes

Un peu corrigé l'exemple de Don, fonctionne bien pour moi

​​importer org.apache.commons.io.ioutils xxx


0 commentaires

0
votes
  Closure include = { attr ->
        out << Holders.getServletContext().getResource(attr.file).getContent();
    }
It is relative to the web-app folder of your grails main application

1 commentaires

J'ai modifié votre approche pour permettre l'inclusion de fichiers externes pour le plugin rendu des grails, où les chemins de réseau seraient bâclées dans des environnements supérieurs - la mine s'est terminée comme suit: def inclusefile = {attr -> ressource URL = détenteurs.getservletContext (). GetResource (attr.fIile) Entrongstream Content = ressource.getContent () String Text = Contenu? Contenu? )} "Out << Texte}



1
votes

Je voulais écrire des pages HTML / Ajax statiques hébergées dans l'application Grails (V2.4.4), mais utilisez le contrôleur pour la réécriture de l'URL. J'ai pu accomplir cela en déplaçant le fichier sur web-app / (pour la facilité de référence) et utilisez simplement la méthode Render () avec les paramètres «Fichier» et «ContentType», tels que:

// My controller action
def tmp() {
    render file: 'web-app/tmp.html', contentType: 'text/html'
}


0 commentaires

0
votes

J'ai pu utiliser l'approche de @ Momo pour permettre l'inclusion de fichiers externes pour le plugin rendu des greils, où les chemins de réseau seraient bâtis dans des environnements supérieurs - la mine s'est terminée comme:

def includeFile = { attr ->
    URL resource = Holders.getServletContext().getResource(attr.file)
    InputStream content = resource.getContent()
    String text = content?.text
    log.info "includeFile($attr) - resource: $resource, content.text.size(): ${text?.size()}"
    out << text
}


0 commentaires