【问题标题】:Groovy server page, creating a tableGroovy 服务器页面,创建表
【发布时间】:2021-06-14 23:14:37
【问题描述】:

我的域有两个字段,例如

Class test{
   static constraints {
     testno(nullable:true)
     opt(nullable:false, blank:false)
   }

   Double testno
   String opt
}

opt 具有“test”、“try”和“final”等选项值。

现在我需要使用上述信息在 .gsp 文件中创建一个表,以便

----------------------------------
         Test        Try       Final
-------------------------------------
TestNo   
-------------------------------------

每个opt 的值在下面的行中显示为 testNo。

我不知道如何从这里开始。我尝试创建一个这样的表:

```<%
def column=[
['field':'Test'],
['field': 'Try'],
['field':'Final']
]
%>```

但是,如何在表格中添加行? 此外,鉴于此,我如何在不同的 gsp 表中使用该表

class Result(){ test(nullable:true) hasMany=[test:Test]}

我希望它在 result.gsp 中呈现 table.gsp

【问题讨论】:

  • 您想在表格中的TestTryFinal 下方显示X 或其他内容,以指示特定记录具有哪个值?
  • 好的,感谢您的回复。

标签: grails groovy gsp


【解决方案1】:

您需要将所有测试发送到控制器中的视图:

def showTests() {
    // your controller code
    [tests: Test.findAll()]
}

然后,在视图文件中使用 gsp 标签渲染数据(例如showTests.gsp):

<html>
   <body>
     <table>
     <tr>
       <th></th>
       <th>Test</th>
       <th>Try</th>
       <th>Final</th>
     </tr>
    
     <g:each in="${tests}" var="t">
      <tr>
        <td>${t.testno}</td>
        <td>${t.opt == "test" ? "x" : ""}</td>
        <td>${t.opt == "try" ? "x" : ""}</td>
        <td>${t.opt == "final" ? "x" : ""}</td>
      </tr>
     </g:each>
    </table>

   </body>
</html>

这只是解决您问题的一个非常简单的方法。

将其用作子资源

如果您的测试包含在另一个资源(如 Result)中,您可以通过两种方式访问​​它们。

如果您将整个报告发送到您的视图,您可以使用:

// controller
def showResult() {
    // your controller code
    [result: Result.get(/*id...*/)]
}

// showResult.gsp view, just change this line
<g:each in="${result.tests}" var="t">

否则,如果您只想将测试发送到上面主要示例中的现有视图:

// controller
def showTests() {
    // your controller code
    def result = Result.get(/*your id*/)
    [tests: result.tests]
}

【讨论】:

  • 谢谢@lifeisfoo。如果表格需要显示在另一个域/控制器的 GSP 标记中怎么办。例如:class Result(){ test(nullable:true) hasMany=[test:Test]}
  • 请@Sam 更新您的问题,以便我更新我的答案
  • @Sam 看看
  • 哦!是def report = Result.get(id)?我想我的问题并没有我想要的那么清楚。我希望 Result 的视图在其页面上显示表格。
  • 这是一个错字,只需更新 Result 的控制器以发送结果对象(解决方案 1)或仅将测试发送到视图(解决方案 2)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 2010-10-02
  • 2014-12-23
  • 1970-01-01
相关资源
最近更新 更多