如何直观地显示 json 响应映射的 pojo

How to display a json response mapped pojo in sightly

我有一个调用第 3 方 api 并获取 json 响应的 sling servlet。我已经使用 Jackson 将 json 响应映射到 pojo class。我现在必须直观地显示这个动态获取和映射的响应。我怎么做?我在响应映射后卡住了

正确的路径是:

HTL/Sightly -> Sling Model -> OSGi Service -> External API

因此您必须提取将数据提取到 OSGi 服务中的代码。

但是请确保调用外部 API 的代码安全。例如,如果外部 API 没有响应或速度极慢,它可能会占用 AEM 的所有可用线程。然后 AEM 可能完全无法使用。为了保护它,您可以使用信号量作为示例。

假设返回的 JSON 是任意的,最好的办法就是将其显示为字符串。为此,与其将 JSON 响应映射到 POJO,我建议使 Sling 模型适应响应。

然后,您可以使用 data-sly-use.model 将该 Sling 模型设置为您的 sightly 代码中的模型,并且在 Sling 模型构造函数中,您可以将响应值设置为 sling 模型的属性.

然后您需要做的就是将该属性放在可见的 ${} 中 html。

如果 JSON 的 format/structure 不是完全未知,您可以在 sightly 中使用 POJO。创建一些条件来测试POJO有哪些属性,这样你就可以把它们放到可见的代码中。

使用新版本的 Sling 模型,您可以通过指定资源类型和要在模型注释中使用的选择器,直接将模型公开为 Servlet。当模型加载到 Apache Sling 中时,它会自动注册一个与模型对应的 Servlet,让您几乎可以零额外代码,创建一个 Servlet 来访问模型的 JSON 表示。太棒了!

以上生活让你的生活更轻松!!

您可以在 Sling 模型中拥有所有对象。由于 sling 模型充当 servlet 您可以进行 AJAX 调用并获得 real-time 响应。

请参考本文档。 https://blogs.perficient.com/2018/07/26/no-servlets-required-exporting-data-with-sling-models/