我正在使用Apache Velocity作为模板引擎开发webapp。我希望它显示HTML5选择,如下所示。
<select class="form-control" id="detailFunction">
#foreach($function in $functions)
<option id="$function.getId()">$function.getTitle()</option>
#end
</select>
我的Function
课程如下:
package com.stackoverflow;
class Function {
private final int id;
private final String title;
Function(int id, String title) {
this.id = id;
this.title = title;
}
public int getId() {
return this.id;
}
public String getTitle() {
return this.title;
}
}
$functions
是List<Function>
。但是,当我运行此代码时,它会说:
Object 'com.stackoverflow.Function' does not contain method getId() at /velocity/editor.vm[line 40, column 48]
它显然在那里。即使将$functions
更改为Function[]
类型也不会改变任何事情。这可能是什么?
答案 0 :(得分:2)
您忘记将public
访问修饰符添加到Function类,以便Velocity能够使用它
Velocity只允许出于安全原因调用公共类的公共方法。
宣布你的班级:
public class Function {
这不是强制性的,但如果你需要在速度模板中,你可能应该添加你的构造函数也是公共访问
public Function(int id, String title) {