0

我会尽量让我的问题看起来很简单,希望能有解决方案。

让我们声明我们有两个模板,如下所示:

html(data,value,charts) ::= <<
    <!DOCTYPE HTML>
    <html>
    [...]
        var $data$ = $value$;
        $charts$
    [...]
    </html>
>>

chart(chartname,data,categoryname,graphs) ::= <<
    var $chartname$;
    $chartname$.dataProvider = $data$;
    [...]
>>

在 Java 中,我必须执行以下操作:

ST myPage = group.getInstanceOf("html");
ST chart1 = group.getInstanceOf("chart");
ST chart2 = group.getInstanceOf("chart");
myPage.add("data", xxx );
chart1.add("data", xxx );
chart2.add("data", xxx );

但是,“数据”对所有人都是相同的(代码重复!),所以我想在我的“html”模板中的数据上应用“图表”模板,例如:

html(data,value,charts) ::= <<
    [...]
        var $data$ = $value$;
        $charts(data)$
    [...]
>>

这是不可能的,因为“图表”模板作为参数而不仅仅是“数据”。

我的问题是:如何调用“图表”模板,使用“html”。“数据”作为“图表”。“数据”,但保持通常的方式在运行时使用 .add(String, Object) 设置参数.. ?

感谢您的时间 !

4

1 回答 1

0

一种选择是从模板中删除data参数。chart这样做将允许对 inside 的引用data在调用上下文(例如模板)chart中查找属性。html但是,这也意味着以下内容:

  1. 您不能显式设置模板data实例的参数chart(Java 代码中的最后两行将引发异常)。
  2. chart模板无法独立呈现。如果您需要在chart没有模板的情况下呈现模板,则html需要定义一个新模板standaloneChart(data, chart),这样您就可以chart在定义data.
于 2013-10-16T14:30:19.840 回答