【问题标题】:AEM6 Sightly: How to pass a parameter from HTML to a method from Java-model class?AEM6 Sightly:如何将参数从 HTML 传递到 Java 模型类的方法?
【发布时间】:2015-03-19 20:58:43
【问题描述】:

我想将一个参数从 html 传递给 WCMUse 类。

Java:

public class ComponentHelper extends WCMUse {

    public void activate() throws Exception {}

    ...

    public String methodA(String parameter1) {
        ...
    }

    public String getParam() {
        String param = "";
        ...
        return param;
    }
}

HTML:

<componentHelper data-sly-use.componentHelper="ComponentHelper" data-sly-unwrap />
...
<div>
    ${componentHelper.methodA @ parameter1=componentHelper.param}
    <!--/* Also tried: ${componentHelper.methodA @ componentHelper.param} */-->
</div>

不幸的是,我似乎无法将任何参数传递给该方法。有什么方法可以将参数从 html 传递给 WCMUse 类?

【问题讨论】:

    标签: aem sightly


    【解决方案1】:

    Java Use-API 不支持将参数传递给 getter 方法。您可以在 Use 类初始化期间传递一次参数。看看这个受Sightly documentation启发的例子:

    <!-- info.html -->
    <div data-sly-use.info="${'Info' @ text='Some text'}">
        <p>${info.reversed}</p>
    </div>
    

    Java 代码:

    // Info.java
    public class Info extends WCMUse {
    
        private String reversed;
         
        @Override
        public void activate() throws Exception {
            String text = get("text", String.class);
            reversed = new StringBuilder(text).reverse().toString();
        }
      
        public String getReversed() {
            return reversed;
        }
    }
    

    只有在从data-sly-template 元素调用 Use 类时,此类参数才有意义(否则参数也可以在 Use 类中硬编码)。更多信息可以在 afero提到的文档的following chapter 中找到。

    【讨论】:

    • 嗨@Tomek @kmb 我也面临着类似的情况,我必须将一个java使用处理程序(我之前启动过)的属性传递给另一个java处理程序的激活。代码就像&lt;div data-sly-unwrap data-sly-use.softwarehandler="${'com.software.wcm.sightly.handlers.SoftwareHandler' @ slaId=anotherhandler.slaId}"&gt;,但在这个anotherHandler java 类slaId 中我得到了null。如果我使用 ${anotherhandler.slaid} 那么它不起作用,如果我使用 '${anotherhandler.slaid}' 那么它作为字符串出现。我有什么方法可以做到这一点?
    • 只是一个更新:使用 Sling Models,您不必编写这样的激活方法,您只需将这些参数注入 @Inject
    猜你喜欢
    • 1970-01-01
    • 2018-09-18
    • 2011-01-15
    • 2020-06-24
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    相关资源
    最近更新 更多