tags - 检查 Play 标签是否有主体

标签 tags playframework conditional-statements

来自docs ,您可以将正文传递给标签,如下所示:

#{hello}Bob#{/hello}

并且主体可以通过doBody使用:

Hello #{doBody /}!

但是如何测试是否提供了尸体呢?

我想在标签中做这样的事情:

#{if hasBody()}
    #{doBody /}
#{/if}
#{else}
    &{'pages.' + _arg + '.name'}
#{/else}

有什么想法吗?

最佳答案

如果您想将标记保留为 html/tag 格式,则可以使用此语法

#{if (s = play.templates.JavaExtensions.toString(_body).trim()) != ''}
  it has a body! ${s}
#{/if}
#{else}
  no body!!!!
#{/else}

您的另一个选择是使用 fastTags(请参阅此处 this 博客文章)。在那里你基本上可以做同样的事情

public static void _myTag(Map<?, ?> args, Closure body, PrintWriter out,  ExecutableTemplate template, int fromLine) {
  String s = JavaExtensions.toString(body);
  if (s.trim() != "" ) {
    //there is a body
  } else {
    // there is no body
  }
}

关于tags - 检查 Play 标签是否有主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9418000/

相关文章:

html - 将 id 属性放在 "a"标签中还是放在 "h1/h2"标签中更好?

php - 以数据库方式处理标签的更有效方法是什么?

java - 在Java中编写密码并获取所有属性的正确方法

json - 将 Jackson 转换为 Play Json

php - AJAX PHP 条件逻辑无法正确评估

python - 如何根据特定条件对列表中的元素进行计数

jquery - 取消选择所有复选框后,客户端过滤器显示所有项目

azure - 编辑 Azure KeyVault secret 版本上的现有标记值

java - 如何在 playframework 2.0 java 中加密数据?

bash - 来自多个 tee 接收者的管道输出在 BASH 脚本中的命名管道上乱序到达的可能竞争条件