我会尝试让我的问题看起来很简单,希望解决方案能够实现。
让我们说明我们有两个模板如下:
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”。“data”表示“chart”。“data”但是通过保持通常的方式在运行时使用.add(String,Object)设置参数..?
感谢您的时间!
答案 0 :(得分:0)
一种选择是从data
模板中删除chart
参数。这样做会导致data
内chart
的引用在调用上下文中查找属性(例如html
模板)。但是,这也意味着以下内容:
data
模板的实例显式设置chart
参数(Java代码中的最后两行会引发异常)。chart
模板无法独立呈现。如果您需要在没有chart
模板的情况下呈现html
模板,则需要定义一个新模板,例如standaloneChart(data, chart)
,以便您可以在其中呈现chart
模板定义data
。