2017-12-20 21:27

HttpKit 的代码极少,仅用于最常用的使用场景,http client 工具可大可小,功能要做得很完善,体积并不会比 jfinal 自身小

建议使用第三方 http client 工具来发送请求

2017-12-20 17:36

当然可以,注意 UrlRewriterFilter 与 JFinalFilter 两者的配合,在 web.xml 中将 UrlRewriterFilter 配置在最前面,那么请求会先被 UrlRewriterFilter 接管

此外,如果 rewrite 规则比较简单的话,还可以自己写个 UrlHandler 来解决,直接改变 String target 这个参数的值就可以实现 rewrite 的功能,十分方便

Handler 的用法在 com.jfinal.ext.handler 中有实际的例子

2017-12-20 17:34

@EATI001 后续一定会解决,已经有三个方案了,jfinal 从未停止对于极速、极简的追求

2017-12-20 17:32

@废话不多说 jsp 与 jstl 这套东西起码 7 年没有用过了,早就忘得一干二净了,jsp/jstl 既然是针对 java 开发者,那么其表达式规则应该与 java 规则保持一致

而 jsp/jstl 是另外搞了一套并不优雅的新规则,所以对 jsp/jstl 一直不感兴趣。 建议你试试 jfinal 自带的模板引擎,表达式的用法与 java 是直接打通的,用起来毫不费力,几乎没有学习成本

2017-12-20 17:29

跨域问题是纯前端问题了,在网上搜一搜解决方案,有很多种,我在此就不再重复了

2017-12-20 16:23

@YiQang getModel 先是要知道你的 Model 所对应的数据表有哪些字段,以及这些字段的类型是什么,然后从 request 中获取数据进行注入工作,单步调试便知

建议让 Model 生成 setter 方法,然后使用 getBean(...) 这个方法来做, getBean 使用的是 setter 方法注入,而不用去管你数据表的字段与字段类型是什么

2017-12-20 16:06

@YiQang 改成自增主键以后,调用 save() 时,就不再需要关注 id 字段的事情了,数据库会自动搞定

2017-12-20 16:05

主要是猜不到报的啥错

2017-12-20 16:04

以 controller 中通过 getRequest() 可获取 request,通过 getResponse() 可获取到 response

用完以后,如果不希望 render,记得调用一次 renderNull() 方法

2017-12-20 16:03

将 C3p0Plugin 换成 DruidPlugin 即可打完收工, c3p0 廉颇老矣

2017-12-20 16:02

@suxiaoqiuking 这个分享太有用了,感谢分享 ^_^

2017-12-20 15:55

这种格式下,输出指令会将其当成是属性取值,可以很简单扩展一个输出指令来解决:

import com.jfinal.template.Directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
public class ValueDirective extends Directive {
public void exec(Env env, Scope scope, Writer writer) {
String key = (String)exprList.eval(scope);
if (key != null) {
Object value = scope.get(key);
if (value != null) {
write(writer, value.toString());
}
}
}
}

然后配置一下:
engine.addDirective("value", new ValueDirective());

用的时候注意要这样用:
#value("ZONGJC.0001-DAYFINISH.FINISH");

2017-12-20 12:28

在 MyDirective 的 exec 方法中通过下面代码可以拿到参数:
Object[] paraArray = exprList.evalExprList(scope);

如果只传了一个参数,还可以通过下面代码去拿:
Object para = exprList.eval(scope);

如果希望控制参数的个数,参数类型,可以在 MyDirective 中添加下面方法:
public void setExprList(Exprlist exprList)

通过 exprList.length() 可以得到参数个数,通过 exprList.getExpr(i) instanceof Xxx可以知道参数类型,具体可以参考 com.jfinal.template.ext.directive 包下面已有的扩展

2017-12-20 11:42

单步调试一下,看一下 save() 方法调用以前 model 中是否有 id 值,如果没有的话要看一下你的 id 是否为自增主键

如果都确定没事,看一下主键名是不是 "id",如果不是的话,要在 apr.addMapping(...) 时指定为正确的主键名

如果不想使用 arp.addMapping(...) 可以利用 jfinal 提供的生成器搞定这一切

2017-12-20 11:39

jfinal 的入口是 JFinalFilter,没有使用 servlet , 在 com.jfinal.core 包下面可以找到源代码