#java #tags #playframework
#java #Теги #playframework
Вопрос:
Я хочу передать имя поля в качестве параметра в пользовательскую игру! тег фреймворка:
#{ifError ${_field}}
<ul class="err">
#{errors ${_field}}
<li>${error}</li>
#{/errors}
</ul>
#{/ifError}
Но все, что я получаю, это исключение:
Template execution error (In /app/views/tags/errorList.html around line 1)
Execution error occured in template /app/views/tags/errorList.html. Exception raised was MissingMethodException : No signature of method: Template_1008.$() is applicable for argument types: (Template_1008$_run_closure1_closure2) values: [Template_1008$_run_closure1_closure2@2da75e1b] Possible solutions: _(java.lang.String), is(java.lang.Object), run(), run(), any(), get(java.lang.String).
play.exceptions.TemplateExecutionException: No signature of method: Template_1008.$() is applicable for argument types: (Template_1008$_run_closure1_closure2) values: [Template_1008$_run_closure1_closure2@2da75e1b]
Как я могу передать параметр своему тегу?
Решение
Я немного изменил решение «Codemwnci» и в итоге получил следующий код шаблона:
#{ifError _arg}
<ul class="err">
#{errors _arg}
<li>${error}</li>
#{/errors}
</ul>
#{/ifError}
Этот шаблон вызывается следующим образом #{errorList 'document.title' /}
Ответ №1:
Поскольку вы уже находитесь внутри фрагмента кода Groovy, используя синтаксис тега #{..}
, вам не нужно использовать синтаксис выражения (т. Е. Вам не нужно использовать ${..}
синтаксис).
Кроме того, errors
тег не принимает никаких входных данных, вместо этого вам нужно передать имя поля в тег ошибки. Вы можете проверить эту документацию для получения подробной информации о error
теге.
Для вас должно сработать следующее
#{ifError _field}
<ul class="err">
<li>#{error _field /}</li>
</ul>
#{/ifError}
Комментарии:
1. Спасибо, это работает! Важно передавать именованный параметр тегу до тех пор, пока имя по умолчанию для одного параметра
arg
не используется. Ошибки Btw имеют необязательный параметр .2. так и есть. это полезно знать!