Vert.x4.4.1中MVEL模板无法访问context变量的问题求助
Vert.x MVEL模板无法访问context变量的问题
我遇到了一个无法定位来源的错误,恳请知道问题根源的人指点。我尝试在模板中捕获context变量,根据Vert.x文档这应该是可行的。
文档中的示例代码:
The request path is @{context.request().path()} The variable 'foo' from the session is @{context.session().get('foo')} The value 'bar' from the context data is @{context.get('bar')}
我已配置引擎与处理器:
MVELTemplateEngine engine = MVELTemplateEngine.create(vertx); TemplateHandler handler = TemplateHandler.create(engine);
路由配置如下:
router.get("/login").handler(routingContext -> { String header_location="/login"; routingContext.put("traducciones",traducciones); if (Users.existAdminUser()){ routingContext.next(); }else { header_location="accounts/register-admin"; routingContext.response().putHeader("location", header_location).setStatusCode(302).end(); } });
我在模板中尝试访问翻译内容:
@code{traducciones = context.get("traducciones")}
却收到以下错误:
2023-04-08 20:09:10,388 ERROR [HttpServerVerticle-5] Unhandled exception in router org.mvel2.PropertyAccessException: [Error: could not access: context; in class: java.util.HashMap] [Near : {... code{traducciones = context.get("traducciones")} ....}] ^ [Line: 1, Column: 22] at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(ReflectiveAccessorOptimizer.java:706) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:360) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:163) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.optimizers.dynamic.DynamicOptimizer.optimizeAccessor(DynamicOptimizer.java:80) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.ast.ASTNode.optimize(ASTNode.java:159) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:115) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:38) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.ast.AssignmentNode.getReducedValueAccelerated(AssignmentNode.java:116) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:42) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.MVEL.executeExpression(MVEL.java:929) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.templates.res.CompiledCodeNode.eval(CompiledCodeNode.java:50) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.templates.res.TextNode.eval(TextNode.java:42) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.templates.res.TextNode.eval(TextNode.java:42) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.templates.TemplateRuntime.execute(TemplateRuntime.java:285) ~[mvel2-2.3.1.Final.jar:?] at org.mvel2.templates.TemplateRuntime.execute(TemplateRuntime.java:281) ~[mvel2-2.3.1.Final.jar:?] at io.vertx.ext.web.templ.mvel.impl.MVELTemplateEngineImpl.render(MVELTemplateEngineImpl.java:84) ~[vertx-web-templ-mvel-4.4.1.jar:4.4.1] at io.vertx.ext.web.common.template.TemplateEngine.render(TemplateEngine.java:52) ~[vertx-web-common-4.4.1.jar:4.4.1] at io.vertx.ext.web.handler.impl.TemplateHandlerImpl.handle(TemplateHandlerImpl.java:75) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.handler.impl.TemplateHandlerImpl.handle(TemplateHandlerImpl.java:32) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141) ~[vertx-web-4.4.1.jar:4.4.1] at enkoa.HttpServerVerticle.lambda$2(HttpServerVerticle.java:162) ~[main/:?] at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.handler.impl.SessionHandlerImpl.handle(SessionHandlerImpl.java:321) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.handler.impl.SessionHandlerImpl.handle(SessionHandlerImpl.java:37) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.handler.impl.SessionHandlerImpl.lambda$handle$7(SessionHandlerImpl.java:316) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.core.impl.future.FutureImpl$1.onSuccess(FutureImpl.java:91) ~[vertx-core-4.4.1.jar:4.4.1] at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.4.1.jar:4.4.1] at io.vertx.core.impl.future.FutureImpl.addListener(FutureImpl.java:196) ~[vertx-core-4.4.1.jar:4.4.1] at io.vertx.core.impl.future.FutureImpl.onSuccess(FutureImpl.java:87) ~[vertx-core-4.4.1.jar:4.4.1] at io.vertx.ext.web.handler.impl.SessionHandlerImpl.handle(SessionHandlerImpl.java:290) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.handler.impl.SessionHandlerImpl.handle(SessionHandlerImpl.java:37) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.handler.impl.BodyHandlerImpl.handle(BodyHandlerImpl.java:96) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.handler.impl.BodyHandlerImpl.handle(BodyHandlerImpl.java:46) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:68) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:37) ~[vertx-web-4.4.1.jar:4.4.1] at io.vertx.core.http.impl.Http1xServerRequestHandler.handle(Http1xServerRequestHandler.java:67) ~[vertx-core-4.4.1.jar:4.4.1] at io.vertx.core.http.impl.Http1xServerRequestHandler.handle(Http1xServerRequestHandler.java:30) ~[vertx-core-4.4.1.jar:4.4.1] at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:264) ~[vertx-core-4.4.1.jar:4.4.1] at io.vertx.core.impl.WorkerContext.lambda$emit$0(WorkerContext.java:59) ~[vertx-core-4.4.1.jar:4.4.1] at io.vertx.core.impl.WorkerContext.lambda$execute$4(WorkerContext.java:121) ~[vertx-core-4.4.1.jar:4.4.1] at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76) ~[vertx-core-4.4.1.jar:4.4.1] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.90.Final.jar:4.1.90.Final] at java.lang.Thread.run(Thread.java:833) [?:?]
我是严格按照Vert.x文档进行操作的,恳请帮忙排查问题。
内容的提问来源于stack exchange,提问作者gabrielmarquez29
相关产品推荐
相关产品推荐

