JFinal 中对于静态资源如何不作为请求,作为过滤

背景: 想将bootstrap 的某个模板与 Jfinal 进行结合。

现象: bootstrap 模板单独使用浏览器打开一切正常

           将bootstrap 放入到使用了jfinal 的工程中,通过Router配置以后跳转。

           页面是可以打开的,但是页面上的效果都没有了,都是最近的html形式了。问题: html 中对于式样会进行css的静态资源加载。但是可能是在jfinal中作为了请求处理了。然后被过滤掉了。所以想请教一下是否有办法将这些静态资源的路径进行配置不作为请求处理。

其他信息: 本次是在demo程序继续上简单进行了修正。
1. xxxConfig.java  
 

public void configRoute(Routes me) {

//me.add("/", IndexController.class, "/index"); // 第三个参数为该Controller的视图存放路径

me.add("/blog", BlogController.class); // 第三个参数省略时默认与第一个参数值相同,在此即为 "/blog"

me.add("/admin",AdminController.class,"/adminHtml");         // 进入后台管理系统的登录页面

}

2. XXController.java

 public void login(){

render("sign-in.html");

}

3. WebRoot中的目录结构

キャプチャ.PNG

评论区

JFinal

2016-11-30 11:19

jfinal 的控制器只会处理动态请求,所有的静态请求都会直接跳过不处理,所以这个问题的原因很简单:资源文件的路径错了

解决办法是将大部分路径改成以 "/" 打头的绝对路径,少数地方可用用相对路径

在开发的时候,在浏览器中按一下 F12 键,打开开发者工具,然后看一下哪些资源请求返回的是 404,然后逐一对路径进行调整即可

①①

2017-09-06 15:13

@JFinal 这里有个问题,类似http://127.0.0.1:8080/wopiHost/wopi/files/test.docx这样的请求,jfinal都会认为它是个静态资源,实际上这里并不是静态资源,而是一个请求,这里的test.docx是请求参数,这种情况该怎么办?

JFinal

2017-09-06 16:54

@①① 最简单的办法是用问号挂参: /files?fileName=test.docx

还有就是可以利用一个 Handler 做个转换,具体可以参考一下 FakeStaticHandler 源码

①①

2018-04-11 09:25

@JFinal 最终还是通过handler解决的,因为这个请求来源于第三方,服务端控制不了。谢谢波总解答。