SlingModels:如何从基础构建表单组件(注入PageContext?)

时间:2016-12-08 12:32:35

标签: aem sling-models

AEM的基础组件只是简单的JSP,在任何java bean中都没有太多逻辑。我现在尝试将表单组件java逻辑转换为Sling Models。但是再次启动组件并不容易,因为有两件事要做(从/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构建这个表单组件。

1 个答案:

答案 0 :(得分:1)

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