render 路径不经过src/main?

image.png 最简单的一个render跳转, 但是他找这个html 没有经过 项目/src/main/webapp下  而是 直接项目/login/login.html 这是为什么 

评论区

whjjjjjj

2019-11-20 14:33

是undertow运行的

JFinal

2019-11-21 10:40

@whjjjjjj 注意文档中的 baseViewPath 、 viewPath 这两项配置:
1:如果不配置的话,viewPath 默认为空,指向的是 src/main/webapp

2:viewPath 由添加路由映射时提供: routes.add("/login", LoginController.class, "/login") 其中第三个参数 "/login" 就是 viewPath

render("login.html") 最终的参数值是:baseViewPath + viewPath + "login.html"

如果你在 render 的时候,参数以 "/" 打头的话,会忽略 baseViewPath 以及 viewPath

这里有详细的文档:
https://www.jfinal.com/doc/3-7

只要用上几次,就很容易理解

whjjjjjj

2019-11-21 10:55

@JFinal 这个用法我肯定知道,举个例子吧,就是viewPath 和baseViewPath 都为空 ,那他理应在src/main/webapp下找login.html 但是他没有 他在项目的根目录下找html

JFinal

2019-11-21 11:08

@whjjjjjj 看到你是用的 undertow , 很可能是你配置了 ertow.resourcePath,这个配置中的第一个有效值会被设定为默认的 baseViewPath

一般建议的配置是:
undertow.resourcePath = src/main/webapp, 其它配置在此用逗号分隔

注意上面的配置,让 src/main/webapp 放在最前面,最前面的将会成为 baseViewPath 以及 PathKit.getWebRootPath() 值


文档中详细介绍了这个配置,也介绍了这个值将影响 PathKit.getWebRootPath() 值,进而影响 configEngine 中的 Engine me 对象的 baseTemplatePath:
https://www.jfinal.com/doc/1-4

热门反馈

扫码入社