0

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 构建这个表单组件。

4

1 回答 1

1

您不一定需要遵循相同的方法,如果您查看javadocs,您可以使用startForm(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, ServletException

于 2016-12-09T04:36:29.857 回答