对此的解决方案不是使用“类似”反射,而是实际使用反射。无论如何,任何用于此的库或框架都最有可能基于反射。
objects类提供了声明或继承字段所需的所有方法。字段类包含有关实际字段的所有信息,例如其名称、类型或值。
例子
要在页面上显示的一些类:
public class Item {
public String foo = "bar";
public int x = 23;
}
模板:
@(item: Item)
<ul>
@for(field <- item.getClass().getDeclaredFields()) {
<li>@field.getName() = @field.get(item)</li>
}
</ul>
输出:
<ul>
<li>foo = bar</li>
<li>x = 23</li>
</ul>
请记住,模板可能不是执行此操作的正确位置,尤其是当您可能想要过滤字段或其他内容时。您应该将代码移至控制器,甚至更好地移至模型。由于您知道对象是Item
,因此您可以创建一个getFields()
方法,在Item
其中实现更复杂的逻辑并返回字段或字段名称的列表。
语义 html 标记的选择实际上取决于字段的内容。一般来说,如果只打印字段名称,字段列表听起来很合理。如果您打印名称和值,则可以使用定义列表dl
或table
.