# JFinalPjax **Repository Path**: Max-Qiu/JFinalPjax ## Basic Information - **Project Name**: JFinalPjax - **Description**: JFinal整合Pjax示例 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-25 - **Last Updated**: 2022-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: JFinal ## README 导入开发工具,运行`DemoConfig.java`内的`main`方法,然后浏览器访问`127.0.0.1` # 编写一个pjax拦截器 > 本拦截器代码参照`JFinal俱乐部`的`jfinal-club`项目 ```java public class PjaxInterceptor implements Interceptor { @Override public void intercept(Invocation inv) { try { inv.invoke(); } finally { Controller c = inv.getController(); boolean isPjax = "true".equalsIgnoreCase(c.getHeader("X-PJAX")); c.setAttr("isPjax", isPjax); } } } ``` # 建一个测试controller ```java public class IndexController extends Controller { public void index() { render("index.html"); } public void test1() { render("test1.html"); } } ``` # 添加拦截器 如果要所有的页面都需要进行拦截,则添加到`configInterceptor`中 ```java public void configRoute(Routes me) { // 设置默认资源路径 me.setBaseViewPath("/WEB-INF"); me.add("/", IndexController.class); } public void configInterceptor(Interceptors me) { // 全局pjax拦截器 me.add(new PjaxInterceptor()); } ``` 如果仅对部分页面(即单个`route`)进行拦截,则添加到`configRoute`中 ```java public void configRoute(Routes me) { // 当前路由添加pjax拦截器 me.addInterceptor(new PjaxInterceptor()); // 设置默认资源路径 me.setBaseViewPath("/WEB-INF"); me.add("/", IndexController.class); } ``` # 建一个公用页面 ```html #-- 如果是 pjax 请求则只调用 main 函数 否则调用 doLayout 函数 --# #define layout() #if(isPjax) #@main() #else #@doLayout() #end #end #-- 主页面 --# #define doLayout()