在启动时填充页面上的字段 - Grails App

时间:2014-09-23 21:03:26

标签: grails gsp bootstrapping

我是grails的新手,现在我被困在某事上了。

我已经创建了我的应用程序并且工作正常。

现在我想在执行一些查询以检索值之后填充启动页面上的一些字段(在我的情况下称为Report.gsp)。

我在启动时在引导程序中执行了一个查询但我不知道如何将它们放到我的gsp页面之后填充该字段。

这是引导代码:

    class BootStrap {
        def dataSource
        def grailsApplication

        def init = { servletContext ->
            initData()
    }

    def destroy = {
    }

    def initData(){
       println("***** in initDATA")
        def sql = new Sql(dataSource)

        def results
        results = sql.execute("select * from customer where id = 42;")
}}

1 个答案:

答案 0 :(得分:0)

Grails使用MVC设计模式。要将值传递到视图(report.gsp),您需要检索控制器内的数据,并将其传递给视图。您的Bootstrap.groovy文件用于执行应用程序启动时需要执行的操作,例如播种数据,而不是填充视图。

如果这是您的主页,您应该创建一个新的控制器和操作,并将根URL映射到该控制器操作,然后在该控制器操作中执行数据查找。

例如,在HomeController.groovy中创建grails-app/controllers

class HomeController {

  def index() {
    // Lookup your data
    def customer = Customer.get(params.id)

    // Pass the results to the view
    [customer: customer]
  }
}

然后,您可以在grails-app/conf/UrlMappings.groovy

中将根网址映射到此操作
"/"(controller: "home", action: "index")

然后应在grails-app/controllerName/actionName.gsp创建您的视图。在我们的例子中,这将是grails-app/home/index.gsp

<ul>
  <li>Customer ID: ${customer?.id}</li>
  <li>Customer Name: ${customer?.name}</li>
  <li>Customer Age: ${customer?.age}</li>
  <!-- Whatever fields you'd like to display -->
</ul>

现在当有人导航到应用程序中的根URL时,HomeController #index操作将执行查找,并将数据传递给您的视图以进行显示。