gpt4 book ai didi

grails - 将GSP页面呈现到Web应用子文件夹中的文件

转载 作者:行者123 更新时间:2023-12-02 14:31:00 25 4
gpt4 key购买 nike

我需要一个非常愚蠢的东西,但是我被卡住了。
我基本上需要渲染gsp页面并将渲染本地保存在服务器端在web-app /下创建的文件夹内。

基本上是这样的输出:

    render(view: "report-test") 

必须保存在文件中,例如位于web-app / report /中的文件夹内的示例report-test.html。

有什么好的建议吗?

非常感谢

更新-EXPLANATION
非常感谢大家。让我解释一下我要做什么,希望有更好的解决方案。我敢打赌,我仍然是grails中的新手。
我正在尝试使用可帮助我创建pdf的print-css和Price软件打印报告。
因此,我的想法是使用gsp动态创建HTML文件,并遵循print-css规则,然后将其保存在服务器端本地,然后执行命令(使用Price)来创建我的pdf文件,并将pdf文件返回给浏览器。

更新
我需要使用CSS,但不能在html内使用,而应作为Price软件命令的一部分。 http://www.princexml.com/
因此,基本上,呈现的gps是没有应用任何CSS的html,然后当我运行命令创建pdf时,我指定要应用的css文件。
例如:
     prince -s pdf-styles.css book.html builds/book.pdf

UPDATE / 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之类的安全框架,请务必小心,您必须能够在没有auth的情况下调用该页面,否则,您会看到登录页面
  • ,而不是您请求的文件
  • 我将basepath var添加到我存储正确地址的位置,以访问Web应用程序目录
  • 最佳答案

    好的,我想我了解您要执行的操作,并且我将尝试更详细地解释我在评论中所说的内容。我不确定这是否是最佳方法,但这是我在没有其他选择的情况下会尝试的方法。

    需求:

    获取Controller方法的输出(例如report()),该方法呈现GSP页面(通过render(view: "report-test")),并将其另存为HTML文件在服务器上。

    方法:

  • 保留report()及其呈现页面的逻辑。
  • 创建另一个Controller方法(例如buildReport()),该方法不自行呈现任何内容,而是转发回其他页面。
  • 使用此buildReport()方法可获取映射到report()的所有URL的内容,并将其保存为文件。

  • 伪代码:
    class YourController {
    def report() {
    // Handle input, generate data for populating page
    render(view: "report-test")
    }
    def buildReport() {
    // Indirectly call report(), passing whatever data is needed as URL parameters manually
    def url = new URL("/path/to/action?arg1=" + params.arg1)
    def data = url.getText()
    def file = new File("/web-app/report/report.html")
    file.createNewFile()
    FileUtils.writeStringToFile(file, data)
    }
    }

    请记住,我尚未测试此代码以验证其是否有效。几乎绝对需要进行修改,但是应该可以理解。

    编辑:正如他们在编辑中提到的OP一样,需要将用于登录筛选的任何安全系统设置为忽略 report(),以免最终没有登录屏幕。任何重定向过滤器也是如此;无论使用哪种语言或工具包,这种方法通常都不适用于HTTP重定向或转发。

    关于grails - 将GSP页面呈现到Web应用子文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30241012/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com