From e5fb3086282eb1528785255a26da30601912a375 Mon Sep 17 00:00:00 2001 From: yangghosts Date: Mon, 9 Oct 2023 14:34:32 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3jfinal5=E5=BC=80=E5=90=AF?= =?UTF-8?q?=E5=85=BC=E5=AE=B9json=E8=AF=B7=E6=B1=82=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=90=8E=E6=8A=A5=E7=B1=BB=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98=20=E8=A7=A3=E5=86=B3jfinal?= =?UTF-8?q?5=E5=BC=80=E5=90=AF=E5=85=BC=E5=AE=B9json=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=8A=9F=E8=83=BD=E5=90=8E=E6=8A=A5=E7=B1=BB?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98=E3=80=82?= =?UTF-8?q?=20=20=20=20=20=20=20=20//JFinal=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=B7=B2=E7=BB=8F=E6=94=AF=E6=8C=81=E7=9B=B4=E6=8E=A5=E8=A7=A3?= =?UTF-8?q?=E6=9E=90contentType=3Dapplication/json=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E7=9A=84rawdata=E6=95=B0=E6=8D=AE=E4=BA=86=20=20=20=20=20=20?= =?UTF-8?q?=20=20constants.setResolveJsonRequest(true);?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit java.lang.ClassCastException: io.undertow.servlet.spec.HttpServletRequestImpl cannot be cast to com.jfinal.core.paragetter.JsonRequest at com.jfinal.core.paragetter.ModelGetter.get(ModelGetter.java:41) at com.jfinal.core.paragetter.ParaProcessor.get(ParaProcessor.java:51) at com.jfinal.aop.Invocation.(Invocation.java:86) at cn.dev33.satoken.jfinal.SaTokenActionHandler.handle(SaTokenActionHandler.java:82) at com.jfinal.ext.handler.ContextPathHandler.handle(ContextPathHandler.java:48) at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:90) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) Signed-off-by: yangghosts --- .../java/cn/dev33/satoken/jfinal/SaTokenActionHandler.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sa-token-starter/sa-token-jfinal-plugin/src/main/java/cn/dev33/satoken/jfinal/SaTokenActionHandler.java b/sa-token-starter/sa-token-jfinal-plugin/src/main/java/cn/dev33/satoken/jfinal/SaTokenActionHandler.java index 61fe3623..7503d151 100644 --- a/sa-token-starter/sa-token-jfinal-plugin/src/main/java/cn/dev33/satoken/jfinal/SaTokenActionHandler.java +++ b/sa-token-starter/sa-token-jfinal-plugin/src/main/java/cn/dev33/satoken/jfinal/SaTokenActionHandler.java @@ -74,9 +74,12 @@ public class SaTokenActionHandler extends ActionHandler { // Controller controller = action.getControllerClass().newInstance(); controller = controllerFactory.getController(action.getControllerClass()); CPI._init_(controller, action, request, response, urlPara[0]); - //加入SaToken上下文处理 + if (resolveJson && controller.isJsonRequest()) { + // 注入 JsonRequest 包装对象接管 request + controller.setHttpServletRequest(jsonRequestFactory.apply(controller.getRawData(), controller.getRequest())); + } + //加入SaToken上下文处理 SaControllerContext.hold(controller); - if (devMode) { if (actionReporter.isReportAfterInvocation(request)) { new Invocation(action, controller).invoke(); From 8db78e0a5d5d3d47fe7ff4743dcdeb561f79535e Mon Sep 17 00:00:00 2001 From: moon69 <1016830869@qq.com> Date: Sat, 14 Oct 2023 12:36:00 +0800 Subject: [PATCH 2/2] =?UTF-8?q?SaTokenDao=20=E6=96=B0=E5=A2=9E=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=96=B9=E6=B3=95=20onChange=EF=BC=8C=E5=BD=93=20SaMa?= =?UTF-8?q?nager.saTokenDao=20=E5=8F=98=E6=9B=B4=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E8=AF=A5=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/dev33/satoken/SaManager.java | 4 ++-- .../main/java/cn/dev33/satoken/dao/SaTokenDao.java | 11 +++++++++-- .../cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java | 6 +++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java index ee1f552e..a2dea029 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java @@ -102,8 +102,8 @@ public class SaManager { SaTokenEventCenter.doRegisterComponent("SaTokenDao", saTokenDao); } private static void setSaTokenDaoMethod(SaTokenDao saTokenDao) { - if((SaManager.saTokenDao instanceof SaTokenDaoDefaultImpl)) { - ((SaTokenDaoDefaultImpl)SaManager.saTokenDao).endRefreshThread(); + if (SaManager.saTokenDao != null) { + SaManager.saTokenDao.onChange(); } SaManager.saTokenDao = saTokenDao; } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java index 48682c74..75a46cd4 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java @@ -199,6 +199,13 @@ public interface SaTokenDao { * @return 查询到的数据集合 */ List searchData(String prefix, String keyword, int start, int size, boolean sortType); - - + + + // --------------------- 实例相关 --------------------- + + /** + * 当 SaManager.saTokenDao 变更时,调用该方法 + */ + default void onChange() { + } } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java index dc9cbae7..eae8d6e9 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java @@ -260,12 +260,12 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao { }); this.refreshThread.start(); } - + /** * 结束定时任务,不再定时清理过期数据 */ - public void endRefreshThread() { + @Override + public void onChange() { this.refreshFlag = false; } - }