【问题标题】:Play framework: passing parameter to custom tag播放框架:将参数传递给自定义标签
【发布时间】:2011-10-22 13:32:34
【问题描述】:

我想将字段名称作为参数传递给custom Play! framework tag

  #{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' /}

【问题讨论】:

    标签: java tags playframework


    【解决方案1】:

    因为您已经在使用标记语法#{..} 进入一段 Groovy 代码,所以您不需要使用 Expression 语法(即您不需要使用 ${..} 语法)。

    另外,errors 标签不接受任何输入,您需要将字段名称传递给错误标签。您可以查看this documentation 了解error 标签的详细信息。

    以下内容应该适合您

    #{ifError _field}
      <ul class="err">
        <li>#{error _field /}</li>
      </ul>
    #{/ifError}
    

    【讨论】:

    • 谢谢,它有效!只要不使用单个参数arg 的默认名称,就必须将命名参数传递给标记。顺便说一句errors has an optional parameter.
    • 确实如此。这很有用!
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多