JFinal 社区 feedback 反馈栏目

热心反馈、提升品质

    JFinal 社区反馈栏目,是用户向作者提出自己在项目使用过程之中碰到的问题或者改进建议,例如某某项目中某个功能不好用,又或者自己有更好的方案反馈给作者,项目作者可以有针对性地进行权衡和改进,有助于打造高品质的项目,从而也为用户带来更大价值。

评论区

745502932

2017-01-11 14:15

update(),这个方法有问题。框架查询表区分大小写,但是执行这个方法,会自动把表字段变成小写。

白菜先生

2017-01-17 10:49

@JFinal 波总,请问我临时生成一些文件,然后将这些文件通过renderFile的方式,渲染给前端。我需要在用户下载完毕后将这些文件删除掉,如何确认用户下载完毕呢?

柳倾城

2017-01-22 08:32

请更新下3.0的文档哦,下载不了,迫不及待先看一波文档了

ktt

2017-01-27 14:35

请问下以下功能能实现吗?能给点思路吗

统计:( #(当前数) /100)


#for(x : list)
#set(当前数= 当前数+ x.count??0)

...
...
#end
能不能 #(当前数) 做为一个占位符或标记符, 等for完累计完当前数,然后调用占位符或标记符变成真正的当前数

ktt

2017-01-27 15:15

jfinal 模板引擎 输入内容何如避免生成空格空白位置或转行,

JFinal

2017-01-27 16:45

@ktt 模板中的指令是从上到下依次去执行的,就跟普通程序一样,所以需要变通一下,例如先用 for 循环算出统计需要的结果,然后再输出

或者用 javascript 在算出来以后,再改变界面的值

JFinal

2017-01-27 16:46

@ktt jfinal 模板引擎不会无故生成空格与空白位置或换行,只是将本属于模板内容的字符输出而已,所以解决办法极其简单,只需要将那些空格、空白从模板中先删除即可

ktt

2017-01-27 21:16

@JFinal 首先感谢你大年三十都还在回答我的问题,谢谢

模板内容

(#@ccount(list)/#(x.count))



#define ccount(xx)
#setLocal(ccount = 0)
#if(xx)
#for(x2 : xx)
#set(ccount = ccount + x2.count??0)
#end
#end
#(ccount)
#end


实际成了这样,这样写多余空白是哪里来的呢?

(



11
/22)

ABC0001

2017-02-02 10:41

你好,我在安装JFINAL IDE后,无法运行,弹出"The chosen operation is not currently available"的错误,我用的是eclipse,Kepler版,谢谢,弄了好几天了,老版本的eclipse也不行,用的都是 JAVA EE开发版,谢谢

jeei

2017-02-04 15:34

为什么不可以配置xml呢

pj_zhong

2017-02-06 21:29

是我个人的问题吗,demo的下载好像蹦了?

JFinal

2017-02-06 21:33

@pj_zhong 多下载一次,有时候同时下载的人比较多,会造成下载失败

pj_zhong

2017-02-06 21:59

@JFinal 下载情况好像没有好转,一直都在提示403 Forbidden

JFinal

2017-02-06 22:06

@pj_zhong 我刚试了一下,完全没问题,你确定是用的下面这两个下载地址:http://www.jfinal.com/download/?file=jfinal-3.0_demo.zip

http://www.jfinal.com/download/?file=jfinal-3.0_demo_for_maven.zip

jiren

2017-02-07 13:11

期待 搜索功能!!詹总 搜索功能 已经加入日程了么

土龙

2017-02-13 09:22

建议评论列表改成倒序排列@JFinal

JFinal

2017-02-13 13:11

@土龙 回复列表会考虑改变排序规则,各有利弊,再多权衡一下

vikingSun

2017-02-27 11:53

我在使用template engine 管理sql时,中遇到了几个问题.
第一个:在sql模板中 所有的指令都是直接在当前scope(找不到的话会继续在parent scope中找)中 已key的形式查询保存的全局data map中是否存在数据. 文档里面出现了多次 可以直接循环data map的代码,但是我都没有使用成功,文档里面没有说明如何获得datamap 索引.
第二个:在通过输出执行#()输出的时候,我碰到的一个场景是:输出的key是我定义在外部java类中的静态常量,如果在输出执行中直接传入静态常量,会直接出书静态常量,而不是我期望的通过静态常量为key查询data map输出我想要的值.

上面带两个问题我都可以用一些手段解决,例如第一个问题我可以在代码传入的map中 map自身的索引页放入map中,第二个问题,我可以吧静态常量改成方法 应该就不会有问题.

JFinal

2017-02-27 12:10

@vikingSun 在 sql 模板中对一个 condMap 进行迭代需要在 getSqlPara 或 getSql 方法传入的 map 实参中放入这个 condMap,也就是相当于:
data.put("condMap", condMap) ,再将 data 这个 map 对象传给 getSqlPara

如果不希望这么用,还可以通过自定义指令来将 root 这个 map 放入一个变量,用的时候这样:
#setRootMap("condMap")
将指令扩展可以非常自由的实现千变万化的功能

第二个问题,你希望是对表达式的求值后的结果再进行求值,并且这个第二次不算是求值,是以值以 key 去 map 取值,对于 jfinal 来说如果这样做,那么用户只希望获取常量的需求就无法满足了

vikingSun

2017-03-01 15:48

谢谢波总上面的回复!
第一个问题:
通用的crud sqltemplate我写完之后发现,不是我想到的东西.因为抽象的太厉害之后所需要的数据都需要外界代码传递给模板函数.例如表名,需要返回的字段.查询条件,查询条件的逻辑操作符等等等等.这样子在代码调用的地方需要用map拼凑查询条件 ,感觉违背了管理sql的初衷,拼凑的时候代码冲还充斥了大量的表字段的字符串使用,并且并没有带来多少效率提升.而且jfinal自带的功能已经有了单表的增删改。查询的话我写的通用sql模板,肯定很局限.还不如直接写sql方便. 我现在疑惑的是,这个通用的crud到底该不该存在?
第二个问题(建议):
在我测试我写的通用的crud sqltemplate模板的时候,我发现代码中充斥了大量的字符串式的表字段引用(第一个问题也有提到),这显然很不利于维护。然后我就意识到不论我写不写通用的crud模板。字符串形式的字段使用这个问题都需要解决。我的想法是在生成的baseModel里面生成静态字符串常量形式的表名和字段名,其他代码操作的时候使用常量来带地手写字段名和表名。不知道简单的方法是否会被采纳?(代码我本地已经实现了)
第三个问题(建议):
既然可以给予模板的管理sql,我个人倾向于一个功能一个sql模板。所以希望把手动代码添加每个模板文件改成扫描指定包路径下的sql文件。(代码我本地已经实现了)

JFinal

2017-03-01 17:32

@vikingSun 第一个问题,sql 管理功能有她合适的场景,例如,做跨数据库的产品,如果 sql 写在外部文件中,可以为不同的数据库分别去写一套,从而实现跨数据库的功能。此外写在外部 sql 文件之中,还有助于一些大公司的 DBA 职位,他们的 sql 是 DBA 来写并不断优化的,写在外部方便随时查看并根据 sql 性能监控的结果做优化。

对于其它很多情况,其一是基本的 CRUD 中的 CUD 都已被 jfinal 实现过了,其二是可以直接在 java 中写 sql,确实没有必要使用外部文件进行管理,这也是 jfinal 在相当长的时间并没有提供外部 sql 管理功能的重大原因

第二个问题,让开发者发挥想象力,各显神通就好,jfinal 作为框架,更好地是去实现基础设施性的功能,这样才能降低学习成本,保持极简风格

第三个问题,与第二个问题类似的原因,jfinal 目前只实现基础功能,以免事情变得复杂。扫描 sql 文件这件事情,说大不大,但要做得很完善,尤其是要做成极简,也得费一番事,例如,得考虑扫描什么类型的文件,是不是要分析文件内容来确定是 sql 文件等等

jikes

2017-03-02 20:18

项目中只做查询,因为表多,SQL比较复杂,也不用去映射单个表,我在控制器中竟然没法用activeRecord,因为DB为null,感觉需求挺简单的,但是竟然做不到,你有好的办法解决我的问题吗?

jikes

2017-03-02 20:25

建议在JFinalConfig中增加一个配置选项,来实现直接在controller中可以调用Db对象。

JFinal

2017-03-02 20:35

@jikes Db 以及 ActiveRecordPlugin 可以用于任何 java 项目中,一直都是可以的,jfinal 手册有一章节专门讲了如何使用。如果你没有用到 model,只用 Db + Record 的话,也要添加 ActiveRecordPlugin,只不过不需要映射 model 而已

热门反馈

扫码入社