2012-02-19 106 views
0

我们有一个列表,我们将其列入要呈现的页面和一个逐行显示每个票据的表格。在表格中输入playframework

<tbody> 
    #{list reqs, as:'req'} 
    <tr> 
     <td>#{req.ticketNumber}</td> 
     <td> 
      <input type="text" class="boxtpl" name="${req.name}" value="${req.points}" maxlength="4"> 
     </td> 
     <td style="text-align: left;">#{req.name}</td>    
     <td>#{req.subproject.name}</td>     
     <td>#{req.assignedUser.firstName} #{req.assignedUser.lastName}</td>    
    </tr> 
    #{/list} 
</tbody> 

所以,很明显的呈现是比较容易的部分.....我们如何去张贴部件上,使得req.points是与该用户在键入填写?看起来我们必须做一些复杂的事情,比如使用req.name或其他东西,我甚至不确定这会起作用。任何人都有如何从游戏框架中的表格发布表单的例子?

感谢, 院长

回答

1

您可以使用列表标记的索引变量索引你的名字

<input type="text" class="boxtpl" name="req[${req_index-1}].name" value="${req.points}" /> 

然后你回到你的控制器列表。

要小心,玩与JPA对象做一些合并的东西,如果你有一些嵌套的对象,你可以有一些问题

2

我觉得我已经做了类似你在找什么东西。这是简化版本,它允许实体列表的编辑和发布:

#{form id:'targetsForm', method:'POST', action:@saveTargets()} 
    <table> 
     <thead> 
     <tr> 
     <th>January</th> 
     </tr> 
     </thead> 
     <tbody> 
     %{int i = 0; String fieldName = null;}% 
     #{list items:targets, as:'target'} 
     <tr> 
      %{ fieldName = "targets[${i}].id" }% 
      #{field "${fieldName}"} 
      <input type="hidden" name="${field.name}" value="${targets[i].id}"/> 
      #{/field} 
      %{ fieldName = "targets[${i}].year" }% 
      #{field "${fieldName}"} 
      <input type="hidden" name="${field.name}" value="${year}"/> 
      #{/field} 
      <td class="center">${target.branch?.code}</td> 
      %{ fieldName = "targets[${i}].jan" }% 
      #{field "${fieldName}"} 
      <td class="center"> 
      <input type="number" name="${field.name}" value="${targets[i].jan}"/> 
      </td> 
      #{/field} 
     </tr> 
     %{i++;}% 
     #{/list} 
     </tbody> 
    </table> 
    <input type="submit" name="_save" id="save-targets" value="Save""/> 
#{/form}