首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Grails中的布局视图访问模型

从Grails中的布局视图访问模型,可以通过以下几个步骤实现:

  1. 在Grails应用程序的grails-app/domain目录下创建一个模型类,例如Person.groovy
代码语言:groovy
复制
package com.example

class Person {
    String name
    String email

    static constraints = {
        name nullable: false, blank: false
        email nullable: false, blank: false, email: true
    }
}
  1. 在Grails应用程序的grails-app/controllers目录下创建一个控制器类,例如PersonController.groovy
代码语言:groovy
复制
package com.example

class PersonController {
    def index() {
        List<Person> persons = Person.list()
        [persons: persons]
    }
}
  1. 在Grails应用程序的grails-app/views目录下创建一个布局视图,例如layouts/main.gsp
代码语言:html
复制
<!DOCTYPE html>
<html>
<head>
    <meta name="layout" content="main"/>
   <title>Grails Layout View</title>
</head>
<body>
    <h1>Persons</h1>
   <table>
       <thead>
            <tr>
                <th>Name</th>
                <th>Email</th>
            </tr>
        </thead>
       <tbody>
            <g:each var="person" in="${persons}">
                <tr>
                    <td>${person.name}</td>
                    <td>${person.email}</td>
                </tr>
            </g:each>
        </tbody>
    </table>
</body>
</html>
  1. 在Grails应用程序的grails-app/views/person目录下创建一个视图,例如index.gsp
代码语言:html
复制
<!DOCTYPE html>
<html>
<head>
    <meta name="layout" content="main"/>
   <title>Grails Layout View</title>
</head>
<body>
    <h1>Persons</h1>
   <table>
       <thead>
            <tr>
                <th>Name</th>
                <th>Email</th>
            </tr>
        </thead>
       <tbody>
            <g:each var="person" in="${persons}">
                <tr>
                    <td>${person.name}</td>
                    <td>${person.email}</td>
                </tr>
            </g:each>
        </tbody>
    </table>
</body>
</html>
  1. 运行Grails应用程序,访问http://localhost:8080/person,即可看到从布局视图中访问模型的效果。

在这个例子中,我们创建了一个Person模型,并在PersonController中通过Person.list()方法获取所有的Person对象,并将其传递到视图中。在视图中,我们使用<g:each>标签遍历所有的Person对象,并将其显示在表格中。在布局视图中,我们使用${persons}变量来访问模型数据,并将其显示在表格中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Grails——赋能敏捷开发的利器

    几年前,一个开餐厅的亲戚找我做一个网上订餐的网站(当时外卖平台还没有兴起)。一开始我是拒绝的,因为我的本职工作就是做软件开发的,业余时间真没兴趣再做。而且从头开始做一个网页应用,工程浩大,我也没有这个时间。 一个偶然的机会,我接触到了Grails,通过它几个小时就能构建一个专业的涵盖前、后端的Web应用,于是我尝试着开发那个订餐网站,结果,我利用几个周末仅用了半个人/月的功夫就做好了一个能上线接单并具备后台管理(含基本财务)的网站。刷新了我对软件开发的认知,原来开发一个复杂的含前、后端的Web应用也可以如此地快。 Grails是一个基于JVM的全栈快速Web应用开发框架,类似的框架有著名的Rails,但是它需要用Ruby语言,对于广大的Java开发者,要学习一门新语言显然不现实。于是有人基于Groovy做了Grails,可以理解为Grails = Rails on Groovy。Groovy是JVM三大衍生语言之一,相对于Closure和Scala,它可以视为是Java的简化版和脚本化,学习周期最短,上手只消半天,而且相对于有点老气的Java,动态语言Groovy编程要快速和灵活得多。所以Grails可以说是面向Java开发者的快速开发框架。

    05

    iOS的MVC框架之控制层的构建(上)

    在我前面的两篇文章里面分别对MVC框架中的M层的定义和构建方法进行了深入的介绍和探讨。这篇文章则是想深入的介绍一下我们应该如何去构建控制层。控制层是联系视图层和模型层的纽带。现在也有非常多的文章宣扬所谓的去控制层或者弱化控制层的作用,觉得这部分是一个鸡肋,他会使得应用变得臃肿不堪。那么他是否有存在的必要呢? 一般的应用场景里面,我们都需要将各种界面呈现给用户,然后用户通过某些操作来达到某个目标。从上面的场景中可以提取出呈现、操作、目标三个关键字。要呈现出什么以及要完成什么目标我们必须要通过具体操作才能达成,也就是说是通过操作来驱动界面的不断变化以及服务目标的不断达成,操作是联系界面和目标的纽带。为了表征这种真实的场景,在软件建模和设计实现中也应如此。我想这也就是MVC框架这种应用模型设计的初衷吧。在MVC框架中V负责呈现C负责操作而M则负责目标。而且这种设计还有如下更多的考量:

    02

    MyLayout和XIB或SB的混合使用方法

    MyLayout是一个可以非常简单和方便的实现各种界面布局的第三方开源库。在我的github项目中大部分DEMO都是通过代码来实现界面布局的,但这并不是表示MyLayout不支持XIB和SB。 在构建一个应用的MVC框架中,我们希望模型、视图、控制这三部分都尽可能的低耦合,而苹果推荐的视图部分构建则是通过XIB或者SB来完成的。因为MyLayout中的各种布局视图类其实都是从UIView派生的,因此MyLayout是完全可以和XIB以及SB混合使用的。 MyLayout的一些布局视图属性以及子视图的扩展布局属性是可以在XIB或者SB界面编辑器里面进行设置的。唯一的一个缺点是这些属性的设置不能起到所见即所得的效果。 因为MyLayout是一个独立而完整的界面布局框架,因此您可以和系统默认的AutoLayout混合使用,也可以完全独立的单独使用。

    04

    架构案例2017(五十二)

    阅读以下关于Web系统架构设计的叙述,在答题纸上回答问题1至问题3. 【说明】 某电子商务企业因发展良好,客户量逐步增大,企业业务不断扩充,导致其原有的B2C商品交易平台己不能满足现有业务需求。因此,该企业委托某软件公司重新开发一套商品交易平台。该企业要求新平台应可适应客户从手机、平板设备、电脑等不同终端设备访问系统,同时满足电商定期开展"秒杀"、"限时促销"等活动的系统高并发访问量的需求。面对系统需求,软件公司召开项目组讨论会议,制定系统设计方案。讨论会议上,王工提出可以应用响应式Web设计满足客户从不同设备正确访问系统的需求。 同时,采用增加镜像站点、CDN 内容分发等方式解决高并发访问量带来的问题。李工在王工的提议上补充,仅仅依靠上述外网加速技术不能完全解决高用户并发访问问题,如果访问量持续增加,系统仍存在崩溃可能。李工提出应同时结合负载均衡、缓存服务器、Web应用服务器、分布式文件系统、分布式数据库等方法设计系统架构。经过项目组讨论,最终决定综合王王和李工的思路,完成新系统的架构设计。

    03
    领券