我正在尝试在模板中的for循环中打印一些html元素。
模板:
<ul>
@for(index <- 0 until appointments.size){
<li>
@(utils.DateUtil.getDate(appointments(index).getStartDate())) - @appointments(index).getReason()
<ul>
@{val procedure = appointments(index).getProcedures()
if(procedure.size() == 0)
{
<b>žádna procedura nebyla vykonána</b>
}
else
{
<b>test</b>
for(proc <- procedure)
{
<b>for test</b>
}
}
}
</ul>
</li>
}
</ul>
问题在于else
分支。
如果我删除此代码:
for(proc <- procedure)
{
<b>for test</b>
}
打印出测试
但如果我留下它,那么else
分支就不会打印出来
我尝试将代码封装在花括号中,不同的循环符号 - &gt; for(index2 <- 0 until procedure.size)
但没有任何效果。
答案 0 :(得分:2)
请记住,这是一个模板引擎,虽然它是基于Scala的,有些东西是行不通的 - 即。变量声明(根据定义,它是控制器的工作)。 Play可替代(如果确实需要):
@defining(appointments(index).getProcedures()) { procedure =>
<b>Common HTML using defined @procedure</b>
}
无论如何,如果我没错,那么用Play模板编写的代码应该如下所示。
@(appointments: List[Appointment])
<ul>
@for(appointment <- appointments) {
<li>
@(utils.DateUtil.getDate(appointment.getStartDate())) - @appointment.getReason()
@if(appointment.getProcedures() != null && appointment.getProcedures().size()>0) {
<ul>
@for(procedure <- appointment.getProcedures()){
<li>@Messages("procedure.execuded") @procedure.name</li>
}
</ul>
} else {
<b>@Messages("no.execuded.procedures")</b>
}
</li>
}
</ul>
注意:从手指写入,它可能包含错误
答案 1 :(得分:0)
@ for(proc&lt; - procedure) { 进行测试 }
在视图中定义变量也被认为是一种不好的做法。正确的方法是从操作中传递所有集合/数据类,并在视图中迭代它们。