Скорость не найти метод - PullRequest
0 голосов
/ 24 мая 2018

Я работаю над веб-приложением, используя Apache Velocity в качестве движка шаблонов.Я хочу, чтобы он отображал выбор 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[] ничего не меняет.Что бы это могло быть?

1 Ответ

0 голосов
/ 27 мая 2018

Вы забыли добавить public модификатор доступа к классу Function, так что Velocity сможет использовать его

Velocity разрешит вызывать только открытые методы для открытых классовпо соображениям безопасности.

Объявите свой класс:

 public class Function {

Это не обязательно, но вы, вероятно, должны добавить свой конструктор и публичный доступ, если он понадобится вам в шаблоне скорости

 public Function(int id, String title) {
...