非法开始简单的表达,不知道为什么?

时间:2015-01-08 12:09:55

标签: java html scala playframework

<table class="table table-hover">
        <thead>
        <th>#</th>
        <th>Poster</th>
        <th>Post</th>
        <th>Bearbeiten</th>
        </thead>
        <tbody>
        @for((result, index) <- posts.zipWithIndex) {
            @if(@result.getPoster() == @userid){
            <tr>
                <td>@{index + 1}</td>
                <td>@result.getPoster_name()</td>
                <td>@result.getPost()</td>
                <td><a href = "/post/@result.getId()">Bearbeiten</a></td>
            </tr>
            }else{
            <tr>
                <td>@{index + 1}</td>
                <td>@result.getPoster_name()</td>
                <td>@result.getPost()</td>
                <td>nicht dein Post</td>
            </tr>
            }
        }
        </tbody>
    </table>

当我尝试编译这个时,我在行中得到错误非法启动简单表达式 if-statment中的@ {index + 1}。有人可以帮助我,我知道为什么这不起作用。

2 个答案:

答案 0 :(得分:3)

启动表达式或块时只使用@。所以在这一行

@if(@result.getPoster() == @userid)

使用此代替

@if(result.getPoster == userid)

答案 1 :(得分:1)

模板引擎会自动检测代码块的结尾。如果您已使用@标记了代码,则不需要重复该代码直到该表达式结束。所以这将完成这项工作:

@if(result.getPoster == userid)

您在@{index + 1}行收到错误,但问题实际上在@if(@result.getPoster() == @userid)行。

我在此处对您的代码进行了两项改进,如果您的userid为长,请勿将其与==符号进行比较,它仅适用于低于127的长对象。

而不是写href = "/post/@result.getId()",您可以使用您的路线。 (动态链接)