2018-08-24 20:17

Model 中禁止写查询等操作, 而且还是自查, 转JSON时 getAll()等写法, 会被当字段属性被调的!! 然后查询的还是自己这个类, 又会被当属性调,,无限循环中..... 虽然默认有递归次数, 但是这样写, 肯定是不规范的!

只要记住一点, Model 中禁止写业务代码即可.

还有一点, 问题写在 [反馈] 栏目

2018-08-24 15:09

@tosur 说的第二个问题, 可以在 ActiveRecordPlugin , 启动后, 1建表, 2关闭它, 3关联mapping, 4启动它, 就相当于刷新了一下 ActiveRecordPlugin . 不过这些Plugin都非常灵活, 怎么用都可以

2018-08-24 15:01

@tosur 关闭有先后顺序的, 后进的先关闭.

2018-08-10 19:42

druid.stop() 也需要关闭下
我一般这样用:


public class DbPlugin implements IPlugin {
DruidPlugin druidPlugin;
ActiveRecordPlugin activeRecordPlugin;

public DbPlugin(DruidPlugin druidPlugin, ActiveRecordPlugin activeRecordPlugin) {
this.druidPlugin = druidPlugin;
this.activeRecordPlugin = activeRecordPlugin;
}

@Override
public boolean start() {
druidPlugin.start();
activeRecordPlugin.start();
return true;
}

@Override
public boolean stop() {
activeRecordPlugin.stop();
druidPlugin.stop();
return true;
}
}
使用: DbPlugin dbPlugin = new DbPlugin(dp, arp);

2018-08-10 10:43

线上用 nginx 了 ?
server里得加
proxy_set_header x-forwarded-for $remote_addr;

2018-08-09 21:52

@Snake8859 jfinal模版代码在后端运行的!!!
JS 代码在前端运行的, 把他们分开运行, 思路大约在下, 自己调下

var jDataArr= null;
#if(j)
jDataArr=[
#for(x, j.data)
{x.fieldName},
#end
]
#end
$.post(
ctx+"/admin/im/getFormList", //url
function(data){
var content="";
for(var i =0;i<data.length;i++){
content+="<div class='form-group'>"
content+="<label class='col-md-2 control-label' for='demo-text-input'>"+data[i].label+"</label>"
content+="<div class='col-md-2'>"
//content+="<input type='text' name="+data[i].fieldName+" class='form-control' value=''>"
content+="<input type='text' name="+data[i].fieldName+" class='form-control' value='"+(jDataArr?jDataArr[i]:'')+"' >"
content+="</div>"
content+="</div>"
}
$("#editForm").prepend(content);
},
"json" //数据格式
);

2018-08-09 19:28

jfinal模版 是后端运行的模版

不在前端运行, 先搞清楚什么在前端运行, 哪些代码在后端运行. 不然全程懵逼状态.

报错的代码应该是这个: #(j?j."+data[i].fieldName+":'')
使用错误 , 建议先看下手册, 再使用jfinal模版 : http://www.jfinal.com/doc/6-4

以及你可能需要的是前端模版插件 : http://www.layui.com/doc/modules/laytpl.html

2018-08-09 15:33

@童年 如果用getFile的话, 肯定要限制的, 不然服务器磁盘是多大?超过磁盘岂不凉了, 还有带宽问题, 你可以设置一个最大值比如100G ??? 这个大小就算是无限制了, 太大的文件都只能走切片或第三方工具. 如果是特殊业务, 比如需要把文件传到第三方文件服务器, 可以直接拿到getRequest()进行IO操作,不在代码服务器留存等

2018-08-09 12:47

或者 JFinal.me().getConstants().setMaxPostSize(100*1024*1024);

2018-08-09 12:46

@童年 更改默认值 在 JFinalConfig 的 方法configConstant(Constants me);里 me.setMaxPostSize(100*1024*1024); 就好了

2018-08-09 12:37

@童年 有默认值:
Default max post size of multipart request: 10 Meg
1024 * 1024 * 10

2018-08-08 12:39

SELECT GROUP_CONCAT( images )
....
GROUP BY gameid

不建议,上面这搞法.数据多了会更卡.

推荐
images字段设置为 JSON 类型, 直接进行存储, 也可查.

或者就在Service里自己组装也挺好

2018-08-08 12:28

@macaque 比较特殊的操作, 还是建议使用okhttp等功能多的工具.
如果你项目中有用 jfinal.weixin 的话 , 可以用 HttpUtils , 里面集成okhttp简化接口, 还挺好用

2018-08-08 12:16

@童年
OriginalFileName >> 原始文件名(在客户端时的文件名)
getFileName() >> 在服务器上的文件名.

因为上传文件夹的位置已经存在 这个文件名了, 这个时候文件名会自动+1, 所以就不一样了. 比如有的业务需要在下载的时候保持原名, 这样的业务一般在数据库会存储文件的路径和原始文件名, 下载的时候就可以还原了.

2018-08-06 15:48

Record user = new Record().set("name", "James").set("age", 25);
Db.save("user", user);

比如上面
就变成了>Db.save("user_" + id, user);

比如> Db.save(TabName.find(id), user);
其他地方建一个TabName类 find(id)方法 寻找表名的?

还有分表的插件应该也可以用的, (我没用过)

看你项目规则了