java - Play框架,for循环内的动态语句

标签 java variables for-loop playframework

我正在尝试循环对象列表并将它们显示在表格中,但我想对每个对象进行一些计算。我希望能够在 for 循环内的多个位置使用该变量。
我找不到在 for 循环内定义动态变量的正确语法。

我要计算的值是进度条的百分比。

<table class="table table-striped table-bordered table-hover" id="dataTables-example">
            <thead>
                <tr>
                    <th scope="col">#</th>
                    <th scope="col">Job (id/name)</th>
                    <th scope="col">Place</th>
                    <th scope="col">Last Name</th>
                    <th scope="col">Progress</th>
                </tr>
            </thead>
            <tbody>
                @for((job,index) <- jobList.zipWithIndex) {
                    //
                    // this is where i'm stuck
                    //
                    @progressPercentage() = @{
                         job.getTotalTaskCount/job.getFinishedTaskCount.toDouble
                    }
                    <tr>
                        <th scope="row">@index</th>
                        <td>
                            <div>
                                <p><strong>@job.getJobName</strong></p>
                                <span><a href='@routes.JobDetailController.loadJob(job.getJobId)'>@job.getJobId</a></span>
                            </div>
                        </td>
                        <td>
                            <div>
                                <h5>@job.getZone</h5>
                                <p>@job.getContinent</p>
                            </div>

                        </td>
                        <td>
                            //
                            // Use of the variable
                            // 
                            <div class="progress progress-striped active">
                                <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="@progressPercentage()" aria-valuemin="0" aria-valuemax="100" style="width: 40%">
                                    <span class="sr-only">@progressPercentage()% Complete (success)</span>
                                </div>
                            </div>
                        </td>
                    </tr>
                }
            </tbody>
        </table>

我收到此编译错误,

not found: value progressPercentage

是否有正确的语法或者这根本不可能?

最佳答案

有两种方法可以完成您想要做的事情(据我所知):

  • 使用 defining 声明作用域变量在 for 循环内。

    @for((job,index) <- jobList.zipWithIndex) {
        @defining(job.getTotalTaskCount/job.getFinishedTaskCount.toDouble) { progressPercentage =>
            // Rest of your template structure here, use like @progressPercentage
        }
    }
    
  • 声明 reusable code block (就像您正在使用的那样),但在 for 循环之外(将 job 作为参数传递)。

    @progressPercentage(job) = @{
        job.getTotalTaskCount/job.getFinishedTaskCount.toDouble
    }
    @for((job,index) <- jobList.zipWithIndex) {
        // Rest of your template structure here, use like @progressPercentage(job)
    }
    

关于java - Play框架,for循环内的动态语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47394910/

相关文章:

java - 在 postgres 上运行 JDBC 时出错

javascript - 如何以这样的方式呈现 JSP,即在该字段的下拉列表中选择复选框(不完全是使用 id 创建的复选框)

r - 通过mutate case_when通过多个条件创建新变量

java - 在Android中以编程方式查找数据库的路径

javascript - 存储在变量中会提高性能吗? var、let、const 也会影响性能吗?

ios - 以编程方式创建多个标签变量

linux - Linux 终端中循环内的 IF 语句不起作用

C++ for 循环 - size_type 与 size_t

java - 这些数字从何而来?

java - 我的 JScrollPane 没有滚动