速度没找到方法

时间:2018-05-24 16:29:50

标签: java velocity

我正在使用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;
    }
}

$functionsList<Function>。但是,当我运行此代码时,它会说:

Object 'com.stackoverflow.Function' does not contain method getId() at /velocity/editor.vm[line 40, column 48]
它显然在那里。即使将$functions更改为Function[]类型也不会改变任何事情。这可能是什么?

1 个答案:

答案 0 :(得分:2)

您忘记将public访问修饰符添加到Function类,以便Velocity能够使用它

  

Velocity只允许出于安全原因调用公共类的公共方法。

宣布你的班级:

 public class Function {

这不是强制性的,但如果你需要在速度模板中,你可能应该添加你的构造函数也是公共访问

 public Function(int id, String title) {