2017-04-21 15:46
@qiongaxiu 还有一个办法就是用传统的开发模式进行项目的启动代替 jfinal 整合进去的 jetty
jfinal 项目是标准的普通 java web 项目,因此,你以前所有有关 java web 的知识依然有效,用上你以前熟悉的方式就好
2017-04-21 11:49
@Ferrari8899 前面说得已经很清楚了,你先将这个 div 内容从 template 中过一遍,这样就生成了动态内容,生成的内容再发给客户端的 js:
renderHtml(renderToString("div.html"));
关键点在于,你要将 div 的内容先用模板引擎渲染一次,然后将渲染的结果响应给:
$("#id").load("url");
2017-04-21 11:29
这样就好解决了,让 js 请求 action,假定你的这个 div 在一个名为 "div.html" 的文件之中,这样来用一下 controller 中的 renderToString:
String ret = renderToString(...);
renderHtml(ret);
你还可以通过下面的代码在 controller 之外任意去用 Engine 对象:
Template template = RenderManager.me().getEngine().getTemplate("div.htm
String ret = template.renderToString(...);
2017-04-21 11:21
@qiongaxiu 在 idea 之下,开发的时候先去掉 provided,打成war 之前再添加一下。 在 eclipse 下可以一直是 provided没有关系
2017-04-20 19:44
PathKit.getRootClassPath() 源代码如下:
String path = PathKit.class.getClassLoader().getResource("").toURI().getPath();
rootClassPath = new File(path).getAbsolutePath();
该目录会指向 class 文件被编译输出到的路径,如果不满足需要可以通过如下几种方式去调整:
1:调用 setRootClassPath(...) 自行指定
2:使用 "../../xxx/yyy" 这种相对路径去调整
3:让 class 输出到 getRootClassPath() 想要到达的地方
2017-04-20 15:44
必然可以,而且极其容易,妙不可言,按如下步骤:
1:将路由拆分为前端的后端两部分
class FrontRoutes extends Routes {
public void config() {
// 关键在这里,下面的拦截器会拦截所有 FrontRoutes 中配置的控制器
addInterceptor(new FrontInterceptor());
add("/", IndexController.class);
}
class AdminRoutes extends Routes {
// 这里配置后端拦截器
addInterceptor(new AdminInterceptor());
add("/admin", AdminIndexController.class);
}
2:在configRoute 中再汇总:
configRoute(Routes me) {
me.add(new FrontRoutes());
me.add(new AdminRoutes());
}
不仅可以分别对拆分的 FrontsAdmin、AdminRoutes 配置不同的拦截器,还可以配置不同的 me.setBaseViewPath(...),非常有利于实际的开发需求
路由的拆分还可以在多人团队开发时,为不同的团队分配不同的 Routes,统一规范路由,各自修改自己分到手的 Routes,可以避免在 git、svn 提交时造成代码冲突