2021-02-19 16:39

为了维持热加载以后 session 中的数据可以使用,在热加载之前 session 中的数据会被持久化,而持久化需要被持久化的对象实现 Serializable 这个接口

检查一下你存放在 session 中的哪些数据是没有实现这个接口的,注意,不仅是直接对象,还要检查间接对象

此外,你给的信息中其实只有一个 error,其中第一个为 WARN,第二个为 ERROR,第二个是 RejectedExecutionException ,注意查明原因

2021-02-18 22:58

配置文件左侧的井号要删掉:
# undertow.ssl.keyStore=pay.0530net.cn.jks
改成
undertow.ssl.keyStore=pay.0530net.cn.jks

2021-02-07 20:02

消灭问题比解决问题要高明

2021-02-07 20:02

这种情况下我建议用 ajax 交互,请求是在后台异常发生的,页面不会跳转,所以也就无需 keep 这个动作了

2021-02-07 19:28

@zhangtianxiao 如果是必定被增强过,那不但不是多余,而且是必须

2021-02-07 18:57

有些类可能已被 cglib 或者 jfinal proxy 代理过一次了,这时你获取的类名类似于:
com.xxx.yyy.Zzzz$$EnhancerByCglib
或者
com.xxx.yyy.Zzzz$$EnhancerByJFinal

源码:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/proxy/proxy_class_template.jf


发文可以贴源码,不要贴图片

2021-02-07 18:51

xss 有很多方法防止,我习惯于用 jsoup 在数据入库前过滤一下

当然,你也可以通过将原 request 包装一下

你的封装我觉得差不多了,可能还有一些方法没有过滤,打开 HttpServletRequest 源码,看看里面有什么方法可疑,然后再将这些方法也过滤一下

2021-02-05 19:45

搞定后可以提交 pull request,参与 jfinal 项目开发:
https://gitee.com/jfinal/jfinal/pulls

2021-02-05 19:44

我不知道是 fst 版本太低导致还是 jfinal 的封装导致

希望你在你的项目中改一改实现,看能不能解决,因为你现在正处于这个环境下,最方便

改造的办法可以是通过扩展 ISerializer ,然后通过 redisPlugin.setSerializer(ISerializer) 切换成自己的

2021-02-05 19:41

String sql = "select table_name from information_schema.tables where table_name = ?"
String tableName = Db.queryStr(sql, 这里输入你要查的表名);
if (tableName != null)
存在
else
不存在

2021-02-04 20:50

@yiditushe 只要方法名是 index,意味着 url 中必须省掉 index,但 jfinal 也为你提供了打破这个限定的方法,那就是使用 @ActionKey,例如:
@ActionKey("/index")
public void index() {
...
}

还可以使用路由扫描功能的 @Path 注解来实现,例如:
@Path("/index")
public class MyController extends Controller {
public void index() {
...
}
}

2021-02-04 20:47

指令嵌套不是这么用的,而是这么用的:
#xxx()
#yyy()
#end

也就是说,指令内部再使用指令

而你的用法:#escape(escape(xxx)) , 其中的内部的 escape(xxx) 是指令 #escape 的参数,千万别搞混

你的用法,内部的 escape(xxx) 用法叫: shared method 调用,可以极其方便去添加一个 escape(...),方法如下:
public class Xxx {
public String escape(String str) {
return MyKit.escape(str);
}
}

最后再配置一下:
engine.addShardMethod(new Xxx());

然后就可以这么用了:
#escape(escape(xxx))

指令与 shared method 的区别一定要搞清楚