AEM 的基础组件只是普通的 JSP,在任何 Java bean 中都没有太多逻辑。我现在尝试将表单组件 java 逻辑转换为 Sling 模型。但是再次启动组件并不容易,因为有两件事要做(从 复制/libs/foundation/components/form/start/start.jsp
)。第一的:
FormsHelper.startForm(slingRequest, new JspSlingHttpServletResponseWrapper(pageContext));
第二:
componentContext.setDecorate(true);
slingRequest
当我从中调整模型时,这很容易,但是我从哪里得到pageContext
呢?我还需要它来获取componentContext
可以通过pageContext
.
我在适应时尝试了以下方法SlingHttpServletRequest
:
@SlingObject
private PageContext pc;
但这不起作用。
编辑:
我想出了如何在没有 pageContext 的情况下创建表单启动组件。虽然与表单开始一起,有表单结束,并且有一部分直接使用 pageContext (复制自/libs/foundation/components/form/end/end.jsp
)
final boolean isSubmittable = FormsHelper.checkRule(resource, slingRequest, pageContext, "submittableRule");
if (isSubmittable || isEditMode) {
不确定这个布尔值是什么,或者更确切地说为什么在渲染按钮之前检查它。
所以要么我需要一种方法来注入,pageContext
要么我需要另一种方法来使用 Sling Models 构建这个表单组件。