invoke替代parse

本文介绍Freemarker模板引擎中页面调用的实现方式,包括如何使用`invoke`和`parse`指令来加载和解析不同类型的页面资源。适用于希望了解Freemarker高级特性的开发者。
#macro(invoke $page)
#if($page.startsWith("/"))
#parse($page)
#else
#set($uri = $request.getAttribute("javax.servlet.include.request_uri"))
#if(!$uri)#set($uri = $request.getServletPath())#end
#set($path = $uri.substring(0, $uri.lastIndexOf("/")))
#parse("$path/$page")
#end
#end

invoke替代parse
可以使用相对路径
这是我原本的invoke函数:InvokeRequest invokeRequest = InvokeRequest.builder() .functionName(LAMBDA_FUNCTION_NAME) .payload(SdkBytes.fromUtf8String(payload)) .build(); InvokeResponse invokeResponse = lambdaClient.invoke(invokeRequest); if (invokeResponse.statusCode() == 200) { String jsonResponse = invokeResponse.payload().asUtf8String(); JsonNode rootNode = objectMapper.readTree(jsonResponse); String bodyJson = rootNode.path("body").asText(); JsonNode bodyNode = objectMapper.readTree(bodyJson); String dailySummaryJson = bodyNode.path("daily_highlight").asText(); JsonNode dailySummaryNode = objectMapper.readTree(dailySummaryJson); String ossKey = dailySummaryNode.path("s3_key").asText(); String bucket = dailySummaryNode.path("bucket").asText();现在我要通过以下invoke替代之前的invoke,请给出相应的修改方案:public String invoke(String functionName, String payload) { long startTime = Instant.now().toEpochMilli(); log.debug("[invokeLambda] begin, functionName: {}", functionName); InvokeRequest request = new InvokeRequest() .withFunctionName(functionName) .withPayload(payload); InvokeResult result = lambda.invoke(request); String resultPayload = new String(result.getPayload().array()); log.debug("[invokeLambda] time: {}, functionName: {}", Instant.now().toEpochMilli() - startTime, functionName); log.debug("[invokeLambda] success, status code is : {}", result.getStatusCode()); if (result.getStatusCode() != 200) { log.warn("[invokeLambda] failed, {}", resultPayload); } return resultPayload; }
10-28
[2025-11-13 09:45:45.219] ERROR Unexpected error occurred in scheduled task. com.alibaba.fastjson.JSONException: unterminated json string, pos 0, json : at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1354) at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1264) at com.alibaba.fastjson.JSON.parse(JSON.java:125) at com.alibaba.fastjson.JSON.parse(JSON.java:116) at org.apache.rocketmq.console.service.impl.DashboardCollectServiceImpl.jsonDataFile2map(DashboardCollectServiceImpl.java:117) at org.apache.rocketmq.console.task.DashboardCollectTask.saveData(DashboardCollectTask.java:244) at org.apache.rocketmq.console.task.DashboardCollectTask$$FastClassBySpringCGLIB$$c818b8cd.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:721) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:656) at org.apache.rocketmq.console.task.DashboardCollectTask$$EnhancerBySpringCGLIB$$c381b190.saveData(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.springframework.scheduling.support.ScheduledMethodRunnable.
11-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值