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 Merci! P> G.SRENDER CODE> ou
_foo.gsp code> 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 ?? p>
6 Réponses :
Une option évidente consiste simplement à renommer de vos fichiers HTML à partir de Si vous souhaitez simplement rendre un fichier HTML à partir d'un contrôleur, vous pouvez utiliser le paramètre si vous voulez faire la même chose à partir d'une .gsp, vous pouvez écrire une balise . Quelque chose comme le suivant (non testé) devrait fonctionner: p> Vous pouvez appeler cette étiquette à partir d'un SGSP à l'aide de p> foo.html code> à
_foo.gsp code> puis utilisez
. Cependant, cela est si évident que je suis sûr que vous en avez déjà pensé.
texte code> de la rendu code> méthode du contrôleur em> p>
<html:render file="/bar/foo.html"/>
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 code>
Qu'est-ce que vous essayez d'accomplir? P>
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. P>
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 redirection (URI: "/ html / my.html") code> p> li>
.gsp code> 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. P> LI>
ol>
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 i>, 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é.
Un peu corrigé l'exemple de Don, fonctionne bien pour moi
importer org.apache.commons.io.ioutils p>
Closure include = { attr -> out << Holders.getServletContext().getResource(attr.file).getContent(); } It is relative to the web-app folder of your grails main application
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} Code>
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' }
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 }