2

我的应用程序中有一个标签,其结构如下:

@(
    columns: Integer
)(header: Html)(body: Html)

<table>
    @if(header != null) {
        <thead>
            <tr>
                @header
            </tr>
        </thead>
    }
    // Body and foot here
</table>

我在我的模板中使用它,如下所示:

@tags.Table(5) { } {
    // My content here
}

前面的代码不起作用:即使我让括号<thead></thead>为空,也会显示。那么如何检查header不为空,null...以及如何在我的模板中声明我的标签?也许我用 声明它是错误的{ }

如果我用 声明它{},我有以下错误:

type mismatch;
 found   : Unit
 required: play.twirl.api.Html
4

1 回答 1

4

twirl 模板编译器将空括号推断为按值调用的参数,返回Unit. 您不能只将大括号留空并期望它通过null

只需将一个空Html对象作为传递header,并在打印之前检查bodyheader是否为非空。

@(columns: Int)(header: Html)(body: Html)
<table>
    @if(header.body.nonEmpty) {
        <thead>
            <tr>@header</tr>
        </thead>
    }
    @* ... etc .. *@  
</table>

并这样称呼它:

@tags.Table(5)(HtmlFormat.empty){
    @* content here *@
}
于 2014-09-27T21:06:56.903 回答