我需要一个非常愚蠢的东西,但我被困住了。我基本上需要渲染一个 gsp 页面并将渲染本地保存在我在 web-app/ 下创建的文件夹中的服务器端。
基本上这个输出:
render(view: "report-test")
必须保存在文件中,例如在 web-app/report/ 中的文件夹中的示例 report-test.html
有什么好的建议吗?
多谢
更新-解释 非常感谢大家。让我解释一下我正在尝试做的事情,希望有更好的解决方案。我敢打赌,我仍然是 grails 的新手。我正在尝试使用可帮助我创建 pdf 的 print-css 和 Price 软件打印报告。所以我的想法是使用 gsp 动态创建 HTML 文件,并遵循 print-css 规则,然后将其保存在服务器端本地,然后执行创建我的 pdf 文件并将 pdf 文件返回到浏览器。
更新 我需要使用 css 但不能在 html 中使用,而是作为 Price 软件命令的一部分。http://www.princexml.com/ 所以基本上呈现的gps是一个没有应用任何css的html,然后当我运行命令来创建pdf时,我指定要应用的css文件。例如:
prince -s pdf-styles.css book.html builds/book.pdf
更新/2 - 关闭
感谢shutgunNinja,在下面的帖子中看到他的伪代码,这里是我要使用的代码:
class YourController {
def printHtml() {
render(view: "report-test")
}
def buildReport() {
String basePath = applicationContext.getResource("/").getFile().toString()
def url = new URL("http://localhost:8080/PrjName/report/printHtml)
def data = url.getText()
def file = new File("${basePath}/reportFolder/report.html")
file.createNewFile()
FileUtils.writeStringToFile(file, data)
}
}
所以正如shutgunNinja 之前写的,我调用buildReport() 来调用URL 来获取html 文件。我想补充几点建议:
- 如果您使用某些安全框架(如 spring security)请小心,您必须能够在没有身份验证的情况下调用该页面,否则您会看到登录页面而不是您请求的文件
- 我添加了存储正确地址的基本路径 var 以访问 web-app 目录