3

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

爪哇:

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 类?

4

1 回答 1

11

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

<!-- 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;
    }
}

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

于 2015-01-21T11:23:06.800 回答