2020-03-27 18:20

业务层拦截器触发条件,任选其一:
1:在 controller 中通过 @Inject 来注入业务层
2:使用 Aop.get(...) 获取业务层对象

通过上面两种方式得到的业务对象,才是被 aop 代理过的,才会让拦截器生效,注意看文档

2020-03-27 11:45

@AlienJunX jfinal 迭代 9 年,依然极简

始终坚持极简设计,极度保持加东西的克制才能打磨成今天的样子

感谢支持 jfinal 俱乐部

2020-03-26 23:05

@himans 已改进:
1:默认 scale 为 5
2:默认采用四舍五入
https://gitee.com/jfinal/jfinal/commit/cf791ec9a2f7ef14aa70b728e7ca58122a6184ec

试用后请反馈给我,我在本地测试非常完美

2020-03-26 12:49

@himans RoundingMode 这配置早已决定添加,所以上面的方案中并未谈到,并且已经决定采用四舍五入,毕竟很多人不太了解 "银行家舍入法"

scale 决定采用第一个方案,默认为 5 这个是否能满足你的绝大多数需求?

默认为 5 是这么考虑的:平常用到小数点两位,有时因为百分比需求要用到 4 位,再额外加 1 位增加精度

2020-03-25 18:11

@abcdefg 没有代码,不好猜

建议先研究一下如何更好地提问

关键是站在回答者的角度,同理心是核心

2020-03-25 16:51

方案二能否满足你当前场景的需求?

2020-03-25 16:49

@himans 我现在想对这个地方进行改进,现在有两个方案,看你那里希望选择哪一个?

方案一:
提供一个 setBigDecimalDivideMinScale(int) 方法用来配置 BigDecimal 除法的最小 scale,默认值为 5
然后代码这样用:
int scale = Math.max(bigDecimalDivideMinScale, (bd[0]).scale());
(bd[0]).divide(bd[1], scale, RoundingMode.HALF_EVEN);

也就是说 scale 取值为被除数的 scale 与配置值取最大值

方案二:
取被除数与除数中最大的 scale 值:
int scale = Math.max((bd[0]).scale(), (bd[1]).scale());
(bd[0]).divide(bd[1], scale, RoundingMode.HALF_EVEN);

结合你的应用场景,你觉得哪种方案最好?

在你的当前场景之外,你觉得哪个方案更好?

2020-03-25 16:43

猜不到在问什么

2020-03-25 16:42

@jiahaokkk jfinal 3.5 这个版本太旧了, 建议升级到 jfinal 4.8, 这里有详细的升级文档:
https://jfinal.com/doc/14-1

2020-03-25 16:41

@jiahaokkk jfinal 开源 8 年多,迭代 9 年多, 大量开发者天天在用, 社区需要对用户负责

2020-03-25 15:00

建议使用 jfinal undertow,比你现在用的 jetty-server 要方便太多了:
https://jfinal.com/doc/1-2

web.xml 都不需要了,不存在配置错误的问题

2020-03-25 12:56

@绿色的小苹果 只要你的项目部署在外网,有外网 ip 地址或者域名, 任何爬虫、黑客都可以这样来访问

2020-03-25 12:44

代码没贴全,修改本贴进行修改

2020-03-25 12:43

@Code_Cat hash 出来的东西,如果还能再解密,那就没有什么意义了

hash 与加密完全是两回事, hash 的目的就是为了不能还原,也就是不能被解密

只有这样,你在腾迅、百度、jfinal.com 上注册时经过 hash 后的密码,才无法被反向解密,只能正向碰撞式破解。如果你的密码足够复杂则可以认为是无法破解

想知道 hash 的具体用法,加入 jfinal 俱乐部,获取本网站的源码,里头的注册、登录就是 HashKit 的完美实践:
http://jfinal.com/club

2020-03-25 12:24

configEngine(Engine me) 中不建议配置:
me.setBaseTemplatePath(...);

因为这个配置是留给非 web 环境以及 me.setToClassPathSourceFactory() 两种情况下使用的:
https://jfinal.com/doc/6-11

你希望配置的这个 "_view" 值,完全可以在 configRoute(Routes routes) 中通过下面的方法配置:
routes.setBaseViewPath("/_view");

注意,如果 Routes 被拆分过,要在各自的 routes 中都配置一次:
setBaseViewPath("/_view");