Jelly - как вызвать метод java с параметрами из тега jelly - PullRequest
0 голосов
/ 31 августа 2018

В моем файле .jelly есть следующая запись:

<j:forEach items="${instance.getVerdictCategoriesList()}" var="p">
    <f:entry title="${%Started}"                             
             field="${p.verdictValue}">
             <f:textbox name="${p.verdictValue}"
                        value="${instance.returnDefaultZeroValue()}"
                        default=""/>
    </f:entry>

В настоящее время я звоню на ${instance.returnDefaultZeroValue()}, и это работает.

Я хочу вызвать метод с несколькими параметрами. Как мне это сделать?

Как: value="${instance.getGerritReportingValueForCustomLabel(${p.verdictValue})}" но это не с ошибкой «не могу разобрать желе».

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Существует два способа вызова метода Java с использованием файла Jelly. Ниже приведены два объекта

  1. Дескриптор: Как вы теперь знаете, Дескриптор является классом конфигурации, на который указывает этот объект. Так что из желе в любой момент вы можете вызвать метод из вашего класса дескриптора.

  2. Экземпляр: это объект, который в данный момент настраивается на странице конфигурации. Нулевой, если это недавно добавленный экземпляр. С помощью этого вы можете вызывать методы из вашего класса Action. Как получатели атрибута поля.

Вы можете связать объект с желе, используя

<st:bind var="backend" value="${descriptor}"/>

OR

<st:bind var="instance" value="${instance}"/>

Метод может быть вызван как backend. {Имя метода backend} ().

если вы используете это из JavaScript, тогда вам нужно использовать аннотацию @JavaScriptMethod поверх вызываемого метода.

0 голосов
/ 31 августа 2018

Полагаю, вы имели в виду

value="${instance.getGerritReportingValueForCustomLabel(p.verdictValue)}"

Синтаксис ${…} вводит интерполяцию выражений JEXL в то, что в противном случае считалось бы литеральной строкой. Он не является частью самого JEXL.

...