2017-09-15 11:15
@hwy123456 如果是刚研究,强烈建议看一下 jfinal 手册中的 template engine 那一章,节省无数时间
2017-09-15 10:52
@arboret jfinal 手册里面全都有, sql 管理功能用的 jfinal 模板引擎,那么模板引擎中的所有功能可以直接用于 sql 模板之中,例如你的这个 sql,用下面的结构,立即避免掉了java 代码中的 if 判断:
#for(x : cond)
#if(x.key)
#(x.key) #para(x.value)
#end
#end
以上通过一个 #if(x.key) 直接避免掉你在 java 代码中的五个 if 判断,此外,生成sql 语句的 IN(...) 这块代码,也完全可以放在模板文件之中,而 java 代码只需要准备好参数就好
生成 sql 的事情天然就该交给模板引擎来做,你现在的用法是 java 代码中做一部分,模板中做一部分,还不如直接在 java 中做完
2017-09-15 10:20
@arboret 很明显问题出在 sql 模板中的使用,但至始至终你都不出示这段代码。
永远记住:生成 "?" 问号占位的是 #para(...) 指令,而不可能与 "map中的 key" 有任何关系
目前你的解决办法很不优雅,只是在生成了错误的 sql 以后,再用 replace 再补救,与真正正确的道路相差甚远
你的 java 代码中用了很多 if 判断,显然这些判断在 sql 模板中去做会更优雅
总之:一定要先会用 jfinal 模板引擎的基本用法,然后再用好 #para,就可以解决问题
2017-09-14 11:24
@aloneJFinal 参数与上传文件本身是被包含在整个 http 封装好的流里面的,解析这个流才能得到参数与文件内容,而一旦解析,文件和参数是同时被解析的,参数存放的位置也是不确定的,或许在文件之中某个位置
2017-09-14 10:13
@听雨跳舞 有关 html 片段渲染 + ajax 的代码在 ShareController 中的 saveReply() 方法里,还有更多玩法,可以去俱乐部交流