Есть ли способ зарегистрировать класс в jin java? - PullRequest
1 голос
/ 14 апреля 2020

Я только начал использовать jin java. Мне нужно получить доступ к списку или массиву следующего класса в шаблоне jin java:

class Interface {
    public String interfaceName; 
    public String interfaceDesc;  
    public String interfaceIP;
    public String maskbits;
    public Interface(String interfaceName, String interfaceDesc, String interfaceIP, String maskbits) 
    {
        this.interfaceName = interfaceName;
        this.interfaceDesc = interfaceDesc;
        this.interfaceIP = interfaceIP;
        this.maskbits = maskbits;
    }
};

Я добавляю следующее в сервисе перед отображением шаблона:

Jinjava jinjava = new Jinjava();

Map<String, Object> context = new HashMap<String, Object>();

Dictionary<String, Object> my_dict = new Hashtable<>();

ArrayList<Interface> interfaces = new ArrayList<Interface>();

interfaces.add(new Interface("eth", "management interface","$*mgmntBR0IpAddress1$","$*mgmntBR0MaskBits1$"));
interfaces.add(new Interface("eth", "pub interface", "$*pubBR1IpAddress1$", "$*pubBR1MaskBits1$"));
interfaces.add(new Interface("eth", "pip interface", "$*pipBR2IpAddress1$", "$*pipBR2MaskBits1$"));
interfaces.add(new Interface("eth", "pip interface", "$*pipBR3IpAddress1$", "$*pipBR3MaskBits1$"));

my_dict.put("interfaces", interfaces);

context.put("my_dict", my_dict);

// reading the template and rendering ...

Затем в шаблоне мне нужно получить доступ к каждому элементу в списке интерфейсов:

{% for interface in my_dict.interfaces %} 
    clish -s -c "set interface {{interface.interfaceName}}{{loop.index}} state on"
{% endfor %}

Но отображаемый шаблон показывает пустые места, где {{interface.interfaceName}}.

Я что-то упустил? Заранее спасибо за помощь

...