在运行时动态增加SafeHtmlTemplates变量值

时间:2018-04-05 13:18:58

标签: gwt

是否可以在运行时增加(或更改一般)接口的附加值?例如,整数用作变量,是否可以在添加变量后递增变量?

假设我有SafeHtmlTemplates界面:

public interface MyTemplate extends SafeHtmlTemplates {
    @Template("<div id=\"{0}\"></div>") 
    SafeHtml temp(Integer id);
}

如果我要使用它:

MyTemplate tpls = GWT.create(MyTemplate.class);

for (int i = 0; i < 2; i++) {
    tpls.temp(i);
}

我会得到:

<div id="0"></div>
<div id="1"></div>

但是我想得到:

<div id="1"></div>
<div id="2"></div>

在以某种方式添加{0}之后递增{0}(类似于{0} + {offsetVariable},到目前为止我认为这是不可能的(或者我只是无法弄清楚如何做到这一点)。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你可以使用这样的助手类:

public class MyTemplateHelper implements MyTemplate {

    private MyTemplate tpls = GWT.create(MyTemplate.class);

    @Override
    public SafeHtml temp(Integer id) {
        return tpls.temp(id + 1);
    }
}

请注意,MyTemplateHelper可以实施MyTemplate

比较用法:

MyTemplate tpls;

tpls = GWT.create(MyTemplate.class);    // original template class
for(int i = 0; i < 2; i++)
    tpls.temp(i);

//  you'll get:
//  <div id="0"></div>
//  <div id="1"></div>

tpls = new MyTemplateHelper();          // helper class
for(int i = 0; i < 2; i++)
    tpls.temp(i);

//  you'll get:
//  <div id="1"></div>
//  <div id="2"></div>