2016-10-13 12:00

@合金来了 通过判断类型来解决是个好办法,慢慢改进就会越来越好

2016-10-13 11:49

@lidongxing2016 补充一下前面的,在建好 action 以后,使用 redirect(actionKey) 重定向到 action ,而不是 redirect(xxx.jsp) 重定向到 jsp

2016-10-13 11:29

@lidongxing2016 手动在浏览器输入 "localhost/agency/jsp/error/reqerror.jsp" 是什么结果? 应该会是同样的错误,这个跟 jfinal 无关了,因为 redirect(url) 仅仅是通知浏览器向 url 发起个请求而已

此外,不建议 redirect 到 jsp 文件,建议所有动态请求全走 action,先建一个 action,然后在这个 action 中使用 render(xxx.jsp) 而非 redirect

2016-10-13 10:51

页面的资源路径使用绝对路径,而不是相对路径,要么以 http/https 打头,要么以 "/" 打头。

因为如果使用相对路径, java web 的规范,会让资源文件的最终路径随着浏览器中的 url 变化,此外,部署方式参考这里,避免一些坑:https://my.oschina.net/jfinal/blog/353062

2016-10-13 10:48

@合金来了 为了保持 BaseModel 与数据表一致,每次生成器每次运时都会重新生成 BaseModel,所以 BaseModel 是不能手工去改的

解决办法前面说过了,自建一个public MyBaseModelGenerator extends BaseModel,覆盖掉父类中的 genGetter 与 genSetter 方法,然后再用 MyBaseGenerator 代替原来的 BaseModelGenerator即可

2016-10-13 09:53

核心在于启让 eclipse 知道编译后的 classes 文件在哪个目录下,以及让 jetty 知道 web 根目前在哪里,第一个配置就是让 eclipse 知道,第二个配置就是让 jetty 知道

2016-10-13 09:52

如果一切按 maven 的标准配置来的话,按如下两步配置:
1:右键点击项目,点击 Properties 菜单,点击 Java Build Path,在右侧的 Source 标签页中的最下方设置 Default output folder 为: your_project_name/target/classes

2:启动项目,需要带参数:src/main/webapp 80 / 5

2016-10-12 20:55

对图片后缀的判断可以预先将所有要控制的后缀放在一个 HashSet 中,然后用下面一句就可以判断了:
if (picSet.contains(...))
是需要控制的图片

2016-10-12 19:08

@nbjgl 建议标题改为 jfinal handler 的使用方法

2016-10-12 18:47

jfinal 没有用过 NumberUtils 这个类,更没有用 apache 这个第三方,应该是你自己的项目中对该类有引用

2016-10-12 18:45

@xhao_06 上面贴的就是 jfinal.com 社区的源码,拿着改一下就可以用了

2016-10-12 17:44

@合金来了 怎么解决的,直接改的数据库类型,还是改的 BaseModel 中的代码?

2016-10-12 17:36

在自建的 BaseController 中做这些事情即可,jfinal 社区就是这么用的,直接拿去用就好:
public class BaseController extends Controller {

private Account loginAccount = null;

public Account getLoginAccount() {
if (loginAccount == null) {
loginAccount = getAttr(LoginService.loginAccountCacheName);
if (loginAccount != null && ! loginAccount.isStatusOk()) {
throw new IllegalStateException("当前用户状态不允许登录,status = " + loginAccount.getStatus());
}
}
return loginAccount;
}

public boolean isLogin() {
return getLoginAccount() != null;
}

public boolean notLogin() {
return !isLogin();
}

/**
* 获取登录账户id,默认已经登录,所以不必判断 null 值
*/
public int getLoginAccountId() {
return getLoginAccount().getId();
}

/**
* 使用 ret.getData() 作为参数,调用父类的 renderJson(Object)
* 考虑添加该特性到 jfinal 2.3
*/
public void renderJson(Ret ret) {
renderJson(ret.getData());
}
}