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

illegal start of simple expression and dont know why?

<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>

当我尝试编译它时,我在行中收到错误 illegal start of simple expression @{index + 1} 在 if 语句中。有人可以帮我吗我知道为什么这不起作用。

您仅在开始表达式或块时使用 @。所以在这一行

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

改用这个

@if(result.getPoster == userid)

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

@if(result.getPoster == userid)

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

我在这里对你的代码也有 2 处改进,如果你的 userid 是一个 Long,不要将它与 == 符号进行比较,它只适用于小于 127 的 Long 对象。

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