如何在 DSL 中访问 Java 的实例变量?
How to access instance variable of Java in DSL?
我有一个数据模型(Car.java)、源模板(dsl文件)和应用程序.
模板ClassCar.java
public class Car {
public String name;
public int price;
public Car() {
}
}
模板文件index.template
<body>
<table>
<tr>
<th>Name</th>
<th>Price</th>
</tr>
{FOR car : cars}
<tr>
<td>{car.name}</td>
<td>{car.price}</td>
</tr>
</table>
</body>
注意: 用 { }
包含的模板符号元素丰富的纯文本
在程序中使用模板:
Car c1 = new Car("??", 52642);
Car c2 = new Car("??", 29000);
Car c3 = new Car("??", 9000);
List<Car> cars= new ArrayList<>();
cars.add(c1);
...
...
输出应该是汽车集合的所有元素。
有问题吗?
我无法从模板文件中的应用程序访问 cars
(实例变量)。
如何在 index.template
文件中获取实例变量 cars
(不是 java class,如 Car
)?
看看Xbase。在官方文档中:https://www.eclipse.org/Xtext/documentation/305_xbase.html
Xbase 通过 java 类型系统为所有 DSL 提供集成。
我有一个数据模型(Car.java)、源模板(dsl文件)和应用程序.
模板ClassCar.java
public class Car {
public String name;
public int price;
public Car() {
}
}
模板文件index.template
<body>
<table>
<tr>
<th>Name</th>
<th>Price</th>
</tr>
{FOR car : cars}
<tr>
<td>{car.name}</td>
<td>{car.price}</td>
</tr>
</table>
</body>
注意: 用 { }
在程序中使用模板:
Car c1 = new Car("??", 52642);
Car c2 = new Car("??", 29000);
Car c3 = new Car("??", 9000);
List<Car> cars= new ArrayList<>();
cars.add(c1);
...
...
输出应该是汽车集合的所有元素。
有问题吗?
我无法从模板文件中的应用程序访问 cars
(实例变量)。
如何在 index.template
文件中获取实例变量 cars
(不是 java class,如 Car
)?
看看Xbase。在官方文档中:https://www.eclipse.org/Xtext/documentation/305_xbase.html
Xbase 通过 java 类型系统为所有 DSL 提供集成。