解决jfinal5开启兼容json请求解析功能后报类转换异常问题

解决jfinal5开启兼容json请求解析功能后报类转换异常问题。
       //JFinal新版本已经支持直接解析contentType=application/json请求的rawdata数据了
       constants.setResolveJsonRequest(true);

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.<init>(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 <yangghosts@163.com>
This commit is contained in:
yangghosts
2023-10-09 14:34:32 +00:00
committed by Gitee
parent f2416a6175
commit e5fb308628

View File

@@ -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();