2017-10-18 11:36

@jFinal老四 jfinal 就是这样一步步迭代式发展的,通过大家的反馈不断改进,同时还要保持架构的优雅,以及对前面版本的兼容性

2017-10-18 11:35

@6165zyx 在 SkipServletHandler 中设置一个断点,观察 target 这个参数的值,立即就能明白了

2017-10-18 11:19

做个 hanlder 跳过 servlet 即可:
public class SkipSerlvetHandler extends Handler {
public void handle(target, req, res, isHandled) {
if (target.startswith(servlet前缀)) {
return ;
}
next.handle(target, req, res, isHandled);
}
}

跳过后时候除了可以用 startswith 还可以用正则,根据你的实际情况来选择,最后再添加上这个 handler:
me.add(new SkipServletHandler());

2017-10-18 11:16

@唐宋元明清 无论如何这个是 jfinal 无法干预的一个过程,纯 java jdk 删文件的事了

2017-10-18 10:51

删除文件纯用的 jdk 中的 java.io.File 这个类中的 delete() 方法, 这个 jfinal 肯定是没法干预到的

在 delete() 之前用一个 if(file.exists()) 判断一下文件是不是存在才可以,很多时候删不掉是由于路径不对,如果是 linux 系统也可以是没有权限,又或者是多个程序打开同一个文件,拒绝删除

2017-10-18 09:53

jfinal 手册里有相关介绍和例子代码

2017-10-18 09:53

在 jfinal 中,上传就是 getFile() 下载就是 renderFile() 很简单的,试一下就知道了

2017-10-17 21:28

test1(String name) 这个 action 是带参的,需要看一下 jfinal 手册第 3.3 小节的内容,配置一个参数即可

配置好以后,直接就这个参数:
renderText(name),不需要再 getPara 了

2017-10-17 20:39

使用 forwardAction(....) 即可

2017-10-17 20:36

toCamelCase(...) 方法默认所有字符是小写的,然后主要对下划线部分做处理,如果参数本身是大写的,通过 toLowerCase() 转换一下就可以了

你的表字段应该是大写,可以通过继承 MetaBuilder 覆盖掉其中的 buildAttrName(...) 方法来实现你的需求

2017-10-17 18:10

@HalcyonDays 样式放在 css 文件中,然后 #for 指令迭代出这些图片来

2017-10-17 18:09

@liujh 你是指 struts2 中的 ActionContext.getContext().getSession() 这种用法吧,在 jfinal 中用一个 ThreadLocal 配合一个全局拦截器很容易:
public class Context implements Interceptor {
private static final ThreadLocal TL = new ThreadLocal();

public class intercept(Invocation inv) {
TL.set(inv.getController().getSession());
try {
inv.invoke();
}finally {
TL.remove();
}
}

public static Sessoin getSession() {
return TL.get();
}

}

最后配置这个为全局拦截器即可:
public void configInterceptor(Interceptors me) {
me.add(new Context());
}

然后你就可以在 service 中这样用来了:
Session session = Context.getSession();

2017-10-17 17:49

session 是 web 层的东西,service 要做得纯粹不要与 web 层的东东耦合

在控制层从 session 中获取所需要的参数以后,再调用 service 层,从而避免在 service 中对 session 依赖

2017-10-17 17:40

提交的时候有可能有图片,那么先来一个 List uploadFiles = getFiles() , 先拿到所有文件再说

然后再根据上传文件的多少去做渲染即可