2019-09-20 14:41

@Code_Cat 使用 oracle 的 number(1) 即可,也就是说长度要是 1

https://www.cnblogs.com/softidea/p/7101091.html

2019-09-20 14:28

@Code_Cat 应该可以生成 boolean 类型, oracle 用的应该不是 bit ,应该有个对应的字段类型

2019-09-20 10:24

@Code_Cat 找找 JDBC 文档中的 oracle 哪种类型对应 java 的 boolean 即可

因为在生成的过程中,jfinal 是直接拿到 JDBC 的映射规则

2019-09-20 10:22

#para 指令所在之处永远是生成一个问号占位字符,所以你上面的代码生成的sql 如下:
select * from ? where formKey= ? and objectID = ?

根据 JDBC 规则,问号占位字符只能出现在 where 子句中, 而你的 sql 的 form 后面居然也出现了问号占位字符, 必然出错

改进的方向是使用输出指令,例如:
select * from #(tableName) where formKey= #para(1) and objectID = #para(2)

注意看上面的 #(tableName) 的用法

如果一定要用下标,改成这样:
select * from #(_PARA_ARRAY_[0]) where formKey= #para(1) and objectID = #para(2)

其中的 _PARA_ARRAY_ 指向了你传的数组变量,在文档中有说明:
https://www.jfinal.com/doc/5-13

2019-09-20 09:25

@苏伟伟 enjoy 引擎用起来符合直觉,几乎无学习成本

2019-09-19 19:50

AutoTableBindPlugin 不是 jfinal 官方出的, 建议使用 jfinal 官方路由

2019-09-19 19:50

方向基本正确, 右键点击浏览器页面,看一看最终生成的 html 数据是什么就清楚了

需要注意:上面的 js 代码是被 render 出来的,例如,你 render("index.html") , 而上面的 js 代码是在 index.html 之中写的

不能写在一个独立的 .js 文件中, 除非你 render(xxx.js);

2019-09-19 18:13

@MR.zhangzhiwei 没有再比 404 更好解决的问题了, 404 明显是路由不对

2019-09-19 18:12

@烟雨 这个是 context path 的问题,部署、运行的时候不建议有这个东东

2019-09-19 18:11

如果是要防止跨脚本站点攻击这类,用用 #escape 指令就好,例如:
#escape(blog.content)

2019-09-19 18:10

@jf大哥大 这种功能不叫定制模板引擎,顶多叫功能定制,或者叫扩展

模板引擎是很大且比较复杂的体系,肯定是不能叫所谓的定制的

enjoy 引擎有很多扩展、定制方式,例如,可以定制自己的输出指令:
public class MyOutput extends Output {
.... 这里的代码定制自己的输出指令
}

public class MyOutputDirectiveFactory extends OutputDirectiveFactory {
public Output getOutputDirective(ExprList exprList, Location location) {
return new MyOutput(exprList, location);
}
}

然后再配置一下:
engine.setOutputDirectiveFactory(new MyOutputDirectiveFactory());

然后在用的时候就是在使用自己的输出指令了:
#(...)

理论上来说,这样定制你就可以随心所欲输出自己想输出的模样了,可以进行多种操作,例如输出前先过滤

2019-09-19 18:05

@shate 其实可以直接访问 webapp 下面的文件,例如:
http://locahost/index/index.html

不需要配置一些东西,注意这类请求不要被 nginx 拦截

再一个,定向转发弄个 Handler 就可以了

2019-09-19 18:03

注意看一下 gzip 相关配置:
# gzip 压缩开关
undertow.gzip.enable=false
# 配置压缩级别,默认值 -1。 可配置 1 到 9。 1 拥有最快压缩速度,9 拥有最高压缩率
undertow.gzip.level=-1
# 触发压缩的最小内容长度
undertow.gzip.minLength=1024

注意生效与响应数据的长度有关,默认是 1024,如果你的响应内容达不到这个长度,是不会被压缩的,因为太短的数据压缩不划算,还不如直接传送来得快

2019-09-19 16:23

@shate 这种方法并不优雅,ControllerBind 真没必要用这个