我使用以下代码制作循环并使用if来创建制表符。
<g:set var="task_list" value="${Task.findAllByEmployee_idAndProject_id(session.user.id,session.id_of_project)}"/>
<g:set var="task_number" value="${task_list.size()}"/>
<g:if test="${task_number}">
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#demo1" aria-expanded="true">${task_list[0].task_name}</a></li>
<g:each var ="i" in="${2.. task_number }" >
<li class=""><a data-toggle="tab" href="#demo${i }" aria-expanded="false">${task_list[i]?.task_name}
</a></li>
</g:each>
</ul>
</g:if>
但是。它显示无法获取属性&#39; task_name&#39;在null对象上 我已经通过将其写为
来检查它不是空对象${task_list[1].task_name}
我已经尝试过使用
`${task_list[${i}].task_name}`
显示
未披露的GSP表达。
答案 0 :(得分:0)
首先,我确定你知道你跳过了#1的任务。除此之外,我默认使用这样的保存范围检索:
(2..task_number).toList()
这在语法上是一种矫枉过正,但会完成这项工作。
打印i
的当前值(例如${i}
之后某处的g:each
最后,我认为在该视图中加载视图所需的数据并不是一个好主意。这就是控制器和服务的用途。如果您确实需要在视图中加载数据,请将其包装在自定义标记中。
答案 1 :(得分:0)
我会将您的代码简化为:
<ul class="nav nav-tabs">
<g:each var="task" in="${task_list}" status="i">
<li class=""><a data-toggle="tab" href="#demo${i}" aria-expanded="${0 == i}">${task.task_name}
</a></li>
</g:each>
</ul>
因此,使用默认迭代功能,默认情况下会扩展第0个任务