2017-07-12 13:49

实现一个redisKit想达到的效果和CacheKit一样:
http://www.jfinal.com/share/299

把com.jfinal.plugin.ehcache.CacheInterceptor 类复制 >RedisInterceptor
改里面CacheKit. 用自己的Kit
这样就实现了功能..

建议你描述一下需求, 波大会有更好的处理方式指引你

2017-07-10 21:06

jsp 的话, 可以试试 TagSupport 自定义标签来做, 还有权限,角色 都可以用它 ,
推荐 jfinal template engine 用过都说好~~

2017-07-10 21:00

先 uf = getFile()
然后,myModel = getModel();
最后再用 uf.renameTo(filePath + fileName) 做文件的后续操作

和正常使用是一样的, 就是需要先调用getFile() , 这样做是为了避免普通请求也要去判断协议做解析, 所以还不如自己在代码中手动标记(放在获取表单参数的前面做解析)

2017-07-10 13:41

如果表单参数较少可以用
最简单的办法是在form表单的action属性上使用 urlPara 或者用问号挂参的方式将 path 传过来,这样就可以在 getFile() 之前通过 getPara(...) 获取了,例如:
action="/upload?filePath=/mypath/..."
filePath = getPara("filePath");
uf = getFile("filePath");


还有一种办法麻烦点,
先 uf = getFile()
然后,filePath = getPara("filePath");
最后再用 uf.renameTo(filePath + fileName) 做后续的转换

--------jfinal语录
23333333

2017-06-26 08:55

从数据库读取出来并且存在多级菜单数据, 记得用缓存查询

2017-06-20 19:09

如果用的较多, 直接怼到 Handler 中.....

2017-06-17 10:44

@qiuzhiwei java final 哈哈还有海哥的 afinal = android final 都是我喜欢的

2017-06-17 10:38

< ?xml version="1.0" encoding="UTF-8"? >
< Books >
#for(x : blogPage.getList())
< book >
< id >#(x.id)< /id >
< title >#(x.title)< /title >
< /book >
#end
< /Books >

2017-06-17 10:37

public class IndexController extends Controller {

static BlogService service = new BlogService();

public void index() {
// render("index.html");
setAttr("blogPage", service.paginate(getParaToInt(0, 1), 10));
render(new XmlRender("books.xml"));
}
}

语法是Template魔版
books.xml 文件:



#for(x : blogPage.getList())

#(x.id)
#(x.title)

#end

2017-06-11 10:41

如果一次发送多条的话就多add几次
outMsg.addNews(title, msg.toString(), null, url);//第一个是消息大图
outMsg.addNews(title, msg.toString(), null, url);
outMsg.addNews(title, msg.toString(), null, url);
outMsg.addNews(title, msg.toString(), null, url);

它里面是个集合:
private List articles = new ArrayList();

2017-06-11 10:32

菜单我一般喜欢这样写:
/**
* 实现父类抽方法,处理自定义菜单事件
*/
protected void processInMenuEvent(InMenuEvent inMenuEvent)
{
log.debug("菜单事件:" + inMenuEvent.getFromUserName());


String eventKey = inMenuEvent.getEventKey();

String title = "菜单信息编码 : " + eventKey;
//详细信息的地址
String url = null;

StringBuilder msg = new StringBuilder();
switch (eventKey) {
case "110":
title = "帮助";
msg.append("您好! 有什么可以帮助您的了? 直接回复文字内容即可稍候回复您");
url = "http://www.jfinal.com";//我一般放H5的地址
break;

case "111":
title = "XXXX";
//msg xxx
break;


default:
msg.append("\\(^_^)/ 正在开发中 ... ");
break;
}



OutNewsMsg outMsg = new OutNewsMsg(inMenuEvent);
outMsg.addNews(title, msg.toString(), null, url);
render(outMsg);
}

2017-06-11 10:26

我用的 1.9 (1.8 也是这样写)
OutNewsMsg outMsg = new OutNewsMsg(inMenuEvent);
outMsg.addNews("标题", "就是好用", null, "http://www.jfinal.com");
render(outMsg);

你先把上面的各种菜单判断,注掉, 放上上面这个感觉一下

2017-06-10 16:48

默认值:
// 初始连接池大小、最小空闲连接数、最大活跃连接数
private int initialSize = 10;
private int minIdle = 10;
private int maxActive = 100;

2017-06-10 16:45

比如使用的Druid:
查看com.jfinal.plugin.druid;下的DruidPlugin
提供了:// 初始连接池大小、最小空闲连接数、最大活跃连接数
public DruidPlugin set(int initialSize, int minIdle, int maxActive) {
this.initialSize = initialSize;
this.minIdle = minIdle;
this.maxActive = maxActive;
return this;
}
设置1也可以的,

2017-06-10 15:07

@huiyuanming1002 不贴代码的错误都是耍流氓哈哈