gpt4 book ai didi

java - Ratpack:如何从类路径渲染文件?

转载 作者:行者123 更新时间:2023-12-02 09:34:13 25 4
gpt4 key购买 nike

我想从类路径渲染或发送“静态”文件。从逻辑上讲,该文件来自引用的项目,并且在类路径根目录下可用。

到目前为止我的代码:

  handlers {

get{
log.info "trying to get index ${file( '/index.html' )}"
render file( '/index.html' )
}

}

调用该网址后,我收到一个 404 错误页面,并在日志中看到:

INFO ratpack - trying to get index C:\my-project\build\resources\main\index.html

我尝试添加类似 spring 的 classpath: 前缀,但没有产生任何积极效果。

我错过了什么? BaseDir 设置了吗?

最佳答案

ratpack中似乎不支持资源渲染:

FileSystemBinding.of()始终创建 DefaultFileSystemBinding

DefaultFileSystemBinding.file()目前仅支持纯文件系统。

但是添加它很容易:

./www/index.htm

<h1>hello world</h1>

./Main.groovy

@Grapes([
@Grab(group='io.ratpack', module='ratpack-groovy', version='1.7.3', transitive=false),
@Grab(group='io.ratpack', module='ratpack-core', version='1.7.3'),
@Grab(group='io.ratpack', module='ratpack-guice', version='1.7.3'),
@Grab(group='org.slf4j', module='slf4j-simple', version='1.7.26')
])
import static ratpack.groovy.Groovy.ratpack
import java.nio.file.Paths
import java.nio.file.Path

@groovy.transform.CompileStatic
Path resource(String rname){
URL url = this.getClass().getClassLoader().getResource(rname)
assert url : "resource not found: $rname"
return Paths.get( url.toURI() )
}

ratpack {
handlers {
get { //render default file
render resource('index.htm')
}
get(":filename") { //render other files
render resource(pathTokens.filename)
}
}
}

运行它:

groovy -cp ./www Main.groovy

关于java - Ratpack:如何从类路径渲染文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57677393/

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