JFinal3.0 demo的问题

blog.html.jpg

如上图所示,JFinal3.0的demo中,其页面导航栏是自动生成的(我暂时还没研究源码,估计是跟#@layout() #define main()这两行代码有关)

但是自动生成的链接是jetty方式的,也就是"/"---->对应首页,"/blog"对应blog管理,但是对于tomcat服务器,此链接的跳转会导致浏览器路径错误

应该如何解决?是tomcat服务器下必须扩展render类自己定义render么,还是官方能够给个基本配置好自动适应tomcat服务器的链接方式?

评论区

xiesisi3

2017-01-20 15:33

补充一句,tomcat服务器适应的是我代码中修改的部分,例如删除和修改对应的链接方式

暴风雪

2017-01-20 16:26

@toni@JFinal@lyh061619 同问 这种路径的问题最烦人了

happyboy

2017-01-20 16:49

不管用什么模板引擎,对路路径问题使用绝对路径是最安全的,自己改一下即可。官方的那个demo只是演示3.0大体怎么用,不能作为开发的标准。呵呵。

xiesisi3

2017-01-20 17:12

@happyboy 那么就问一个简单的问题,怎么处理使用JFinal Template自动生成的导航栏的链接

happyboy

2017-01-20 17:16

@xiesisi3 由模板自动处理无法手动干预的部分这得请波总出马了,@JFinal

toni

2017-01-20 17:19

@暴风雪 一般在url 路径前面加上 contextPath ,这样就可以兼容各种方式部署了。

xiesisi3

2017-01-20 17:37

@toni 我不是不知道如何解决url本身的问题,我上面的截图已经解决了删除和修改的链接问题——加不加basePath那是个人习惯,但是我现在就是想弄清楚导航栏那部分的链接如何修改,一、在页面看不到地址代码 二、源码我刚才粗略看了一下也没找到(水平有限,看源码比较吃力,好吧我后面一直在看页面的规则也就是com.jfinal.template.expr.ast包下的所有类,这个对以后开发页面是肯定要了解的)

toni

2017-01-20 17:49

@xiesisi3 跳转错误的原因就是因为 layout上的url没添加 contextpath,jetty 到 contextpath 是/,tomcat的contextpath 为项目名吧。把 layout上的url 加上 contextpath 就可以正常了 。

toni

2017-01-20 17:57

@xiesisi3 expr.ast这个包是定义了表达式的语法tree如何处理。#define main()这个,#define表示指令,main() 为表达式;#@layout() 中 #@为指令,layout()为表达式,这些主要用来控制变量输出,并不会影响页面跳转。

lyh061619

2017-01-20 18:18

@暴风雪 比如说路由配置是这样子的:
me.add("/admin/blog", BlogConroller.class, "/_back/blog")的话,
redirect的话写全路径如:redirect("/admin/blog")就好,
render的话直接如:render("blog.html")可以了。

lyh061619

2017-01-20 18:21

@暴风雪 完整的就这样:
1、路由配置:me.add("/admin/blog", BlogConroller.class, "/_back/blog")
2、action:
public void index() {
render("blog.html")
}

public void add() {
redirect("/admin/blog");
},这个redirect("/admin/blog")后直接跳转到index()这个方法,不需要加什么contextPat的。

suruozhong

2017-01-21 09:05

引擎模版

热门反馈

扫码入社