使用jfinal3.3的模板引擎,页面被加载了两次???

使用jfinal 默认模板, render页面时,模板加载了两次,请问这是怎么回事??

是用handle拦截所有页面,然后render的

public class PageHandler extends Handler
{

    @Override
    public void handle(String target, HttpServletRequest request, HttpServletResponse response,
                       boolean[] isHandled)
    {
        String regHtml = "(.*/.*\\.html)";
        if(target.matches(regHtml))
        {
            RenderManager.me().getRenderFactory().getRender(target).setContext(request, response).render();
        }
    }

}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	demo!
</body>
</html>

最后展示的效果是下面这样的...

demo! demo!

这是浏览器展示的代码

<html><head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	demo!




<meta charset="UTF-8">
<title>Insert title here</title>


	demo!

</body></html>


评论区

JFinal

2018-04-25 17:35

大致改成下面的结构即可:
if(target.matches(regHtml)){
RenderManager.me().getRenderFactory().getRender(target).setContext(request, response).render();
isHandled[0] = true;
} else {
next.handle(target, request, response, isHandled);
}

JFinal

2018-04-25 17:36

重点在于,自己如果在 Handler 中处理过了,并且不想让 tomcat jetty 处理本次请求,得用下面一行代码:
isHandled[0] = true;

clatt

2018-04-25 17:46

嗯, 加上这行可以了 : ) 为什么jetty会接管这次请求呢, 我是用tomcat启动的

热门反馈

扫码入社