2022-07-01 01:07

看上面你的问题描述,业务要求是对请求过来参数(json)做密数处理了,现在你的想法是将这些已加密参数做个统一解密处理,然后在validate、controller中直接使用,这个问题通过重写JsonRequest(这个类已经接管request) 如:MyJsonRequest 然后如下:

一、重写这处理json数据
public JsonRequest(String jsonString, HttpServletRequest req) {
Object json = com.alibaba.fastjson.JSON.parse(jsonString);
if (json instanceof com.alibaba.fastjson.JSONObject) {
jsonObject = (com.alibaba.fastjson.JSONObject)json;
} else if (json instanceof com.alibaba.fastjson.JSONArray) {
jsonArray = (com.alibaba.fastjson.JSONArray)json;
}

this.req = req;
}

二、重写这处理getPara(xx)数据
@Override
public String getParameter(String name) {
// String[] ret = getParaMap().get(name);
// return ret != null && ret.length != 0 ? ret[0] : null;

// 优化性能,避免调用 getParaMap() 触发调用 createParaMap(),从而大概率避免对整个 jsonObject 进行转换
if (jsonObject != null && jsonObject.containsKey(name)) {
Object value = jsonObject.get(name);
if (value instanceof com.alibaba.fastjson.JSON) {
return ((com.alibaba.fastjson.JSON)value).toJSONString();
} else if (value != null) {
return value.toString();
} else {
// 需要考虑是否返回 "",表单提交请求只要 name 存在则值不会为 null
return null;
}
} else {
return req.getParameter(name);//这个位置处理解密数据
}
}
三、在constants配置
me.setJsonRequestFactory((json, req)->{
return new MyJsonRequest(json, req);
});
这解决方案不行么?为何搞得如此复杂。

2022-06-22 13:08

跟jdk版本有关,新版本jdk发布undertow org.jboss.xino组件代码没有及时适配,在一些特定条件下会出现编译时可以加载到类,运行时不可以加载到类,这时候就会出现java.lang.NoClassDefFoundError异常。

2022-04-08 08:48

要虚心,决定选择使用什么没毛病,eclipse表示这锅不背:没想像那么差劲!然再回首eclipse真香。

2022-03-31 22:20

不错不错,感谢分享

2021-07-30 00:34

1、enjoy模板是否可以和jsp页面混用 参考下这:https://jfinal.com/share/477
2、.jfinal中拦截器的如何使用 参考下这:https://jfinal.com/download/now?file=jfinal-blog-1.7.zip 、https://jfinal.com/doc/2-6

2021-07-02 21:55

使用标准通用的sql语句即可,方言配置选用AnsiSqlDialect或OracleDialect,其他的原先怎么用现在就怎么用。

2020-11-27 10:37

@烟雨 异常信息无法锁定问题,你断点跟进看具体造成原因。

2020-11-26 22:09

注意看下错误信息FileNotFoundException这:没有界面用renderNull();

2020-11-20 23:59

解决方案:
一、使用模板直接render可用#date 指令 date指令用于格式化输出日期型数据,包括Date、Timestamp等一切继承自Date类的对象的输出: #date(account.createAt)或#date(account.createAt, "yyyy-MM-dd HH:mm:ss");
二、如果传到前台是json格式,在在your config中 public void configConstant(Constants me){}配置想要的日期格式如:me.setJsonDatePattern("yyyy-MM-dd HH:mm:ss");

2020-11-20 23:46

插件这个位置new EventPlugin().async()要配合@EventListener(async = true)开启异步。

2020-11-11 19:04

@北流家园网 你的这个顾虑我曾有思考过这个问题,坚决然而然的选择扫描路由,完全不用担心通过controllerPath无法定位控制类的问题,除非你在controllerPath命名本来就是经常干这【张冠李戴】这个没办法,或者团队中其他成员也是也是经常干这种【张冠李戴】的事情,建议你还是用手动绑定路由【但也不是绝对接的可以通过搜索来定位控制器类】;或者是自己本来就是喜欢路由控制器绑定全局观的这种的也建议你使用手动绑定路由一目了然,不过使用手动绑定路由也存在一个小问题【因人而易】,比如我自己对代码强迫症的都要必须手动排版成金字塔排版路由样式其实没什么作为就是为了看得顺眼而已,实则在浪费时间。

2020-11-11 18:40

@qsyan 提供扫描路线非但不偏反而更加实用、自由度更广群体,即使官方不实现扫描路由,社区一样有很多人有这个需求或使用第三方不稳定的扫描路由,最后一句中肯的:使用与否完全取决用户,JF适应能力更强。

2020-11-11 18:33

@JFinal 波总我顶你:提供扫描路线非但不偏反而更加实用、实现效率、性能并存,适应不同人群人,JF小而精美更加多样化。

2020-11-11 18:10

@yxkuser 一般存在抵触心理,过后再回头想想,其实无非就是提供多种选择而已,不现选择适应不同人群需要,用与不用完全取决于自己。