2017-04-21 15:46

@qiongaxiu 还有一个办法就是用传统的开发模式进行项目的启动代替 jfinal 整合进去的 jetty

jfinal 项目是标准的普通 java web 项目,因此,你以前所有有关 java web 的知识依然有效,用上你以前熟悉的方式就好

2017-04-21 14:53

打通后,这样用都可以: #("abcdef".substring(...))
直接调用对象上的方法

2017-04-21 14:52

这种情况直接调用方法就好:
#if (model.isXxx())
#(model.isXxx())
#end

jfinal template engine 是与后端 java 直接打通的,just do it

2017-04-21 14:50

@Ferrari8899 靠,比我告诉你的方法还简单,牛逼

2017-04-21 11:51

@Ferrari8899 记得搞定后回来分享一下

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-21 11:20

问题描述得不是很清楚,我只能先猜一猜

添加 me.add(new SessionInterceptor()) 了没有?
注意 # 这个字符要是英文输入,不能是中文全角输入

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 16:29

@ihss23 你的提问比较有深度

2017-04-20 15:45

忍不住做个官方广告,加入俱乐部,获取 jfinal club 项目,该项目中有大量这种最佳实践,极其实用

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 提交时造成代码冲突

2017-04-19 18:01

先用 handler , 在里面对请求做日志,要先知道它的规律,才好去解决。 你不知道,回复你问题的小伙伴们更加不知道

解决这个问题的前提是先要能识别出什么是恶意爬虫来的请求

2017-04-19 17:51

写个 handler 或者拦截器,识别一下爬虫,然后阻止一下