`

grails 中 -> 和 ? 以及*.(

 
阅读更多
    grails 中 -> 和 ? 以及*.(
初学grails,对bootsrap.goovy 中的 servletContext -> 一头雾水,这是groovy中的简写方式,用于将参数params传递给谁,
例如  MyObject mo ->   其实相当于   MyObject mo = new MyObject(params);
即传递一个 实例mo
例如  在controller 中 validate,调用commond,将params传入commond类中

class MemberController {

    def search = { SearchCommand cmd ->      


if (cmd.hasErrors()) {           


redirect(action:'error')      


} else {

            // do something else 

        }     } }


----------------------------------


class SearchCommand {   


String teamname   


String username  


String gender

    static constraints = {

        gender (inList:[ "F", "M"])   


} }




?.
用于判断非空,如  man 类, 包含 man.name, man.age。
在JAVA内一般情况下需要判断
if(man!=null){
   if (man.name!=null){
   System.out.println(man.name);
   }
}
而在 groovy中 ,直接简化 成
print man?.name
如果  man为空,返回null
groovy中还可以链式   man?.name?.age
例如 页面中



如果member不为空,返回member.phone,否则返回空字符串,同样道理,如果member.phone不为空,返回member.phone.encodeAsHTML()




另外 ?还有另个用途,就是JAVA的三元
man.name==null?"":man.name
可直接写成
man.name? :""
即:前的不为空为本身的部分可省。



“*.”操作符。
    
     def list = ['abc','yyyy','1234467']
    
     def sizes = list*.size()
    
     sizes.each{
        println it
     }

打印的结果为:
3
4
7

通过上面的例子,我们可以知道,“*.”操作符的操作对象是一个List对象,如上面的list对象;然后它的结果也是一个List对象;最后还有一个size()方法,是在取元素的长度。
通过结果,我们知道,我们的“*.”操作符首先对list对象的每一个元素进行size()运算,然后把运算得到的每一个结果作为元素组成一个新的list对象sizes。
可以知道,上面的“*.”操作符的运算相当于下面的代码:
    
     def list = ['abc','yyyy','1234467']
    
     def sizes = list.collect{
        it.size()
     }
    
     sizes.each{
        println it
     }
    
同样的结果,但上面的代码比起“*.”操作符就麻烦多了。知道了“*.”操作符的作用,我们就可以对它进行更多的应用。
假设我们有如下的一个GroovyBean:
class Empl
{
    String name
    int age
}

我们现在有一个Empl对象为元素的List对象:
def list = [new Empl(name:'Tom',age:12),new Empl(name:'Alice',age:15),new Empl(name:'Rose',age:20)]
  
现在,我们要取得每一个元素的age,组成一个新的List对象:

       def sizes = list*.age
  

下面我们来测试:
     
       sizes.each{
           println it
       }
  
结果为:
12
15

20
分享到:
评论

相关推荐

    springsource-tool-suite-3.9.11.RELEASE-e4.14.0-up.zip

    7. **features**目录:这个目录下的文件描述了STS中的各种特性,比如Spring框架的支持、Groovy/Grails开发工具等,每个特性通常对应一个或多个插件。 通过这个更新站点,开发者可以轻松地将STS集成到现有的Eclipse...

    elasticsearch-head-compile-after.tar.gz+node-v8.1.2-linux-x64.ta

    Elasticsearch-Head是一个基于Grails开发的Elasticsearch的前端界面,它可以帮助开发者和管理员可视化地监控和管理集群,包括节点状态、索引信息、文档操作等。"compile-after"可能意味着这个版本是在Elasticsearch...

    grails-fck-editor-0.3.zip_grails_grails-fck-editor

    标题中的"grails-fck-editor-0.3.zip_grails_grails-fck-editor"表明这是一个与Grails框架相关的插件,具体来说是FCKeditor的一个版本。FCKeditor是一款广泛使用的开源富文本编辑器,它允许用户在网页上创建和编辑...

    grails-doc-CN-1.0.rar

    学习 Grails 需要掌握 Groovy 的基本语法,包括类、对象、闭包以及元编程特性。 2. **Domain Class(领域模型)**:Grails 的核心概念之一是 Domain Class,它用于表示业务对象。这些类自动与数据库进行交互,通过 ...

    springsource-tool-suite-3.9.9.RELEASE-e4.9.0-updatesite.zip

    SpringSource Tool Suite (STS) 是一个基于Eclipse的集成开发环境,专为Spring框架和相关技术提供优化。这个资源是SpringSource Tool Suite的3.9.9.RELEASE版本,适用于Eclipse 4.9(也称为 Oxygen.3a Release)。在...

    grails-datastore-simple-1.1.5.RELEASE.zip

    开发者可以通过研究这些代码来了解如何在Grails应用中创建和管理类型安全密钥,以确保应用在处理敏感信息时遵循最佳安全实践。 在这个开源项目中,Grails Datastore Simple与类型安全密钥的结合,为开发者提供了...

    grails-datastore-gorm-plugin-support-2.0.4.RELEASE.zip

    通过深入研究"Prestige-master"中的代码,开发者能够提升自己在Grails框架和Android开发中的技能,掌握如何将两者结合,创建高效、可扩展的应用程序。 总之,"grails-datastore-gorm-plugin-support-2.0.4.RELEASE....

    groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part2

    groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part2 共两个包,解压后需要将扩展名.zip.bak改名为.zip重新解压。 http://dist.springsource.com/release/STS/3.8.1.RELEASE/dist/ e4.6/spring-tool-...

    Grails1.1中文文档-----2009.3.25

    Grails1.1中文文档-----2009.3.25

    groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part1

    groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part1 共两个压缩包,解压后将扩展名.zip.bak改为.zip再次解压。

    spring-tool-suite-4-4.7.1.RELEASE-e4.16.0-win32.win32.x86_64.zip

    6. **Groovy/Grails支持**:除了Spring框架,STS还支持Groovy和Grails框架,这对于开发基于这些技术的应用程序非常有帮助。 7. **Integration with Git**:内置的Git版本控制支持使得版本管理和团队协作更加方便。 ...

    grails-docs-1.0-RC1.pdf

    - **Tag Libraries**:介绍Grails中的标签库功能,以及如何创建和使用自定义标签。 4. **General Architecture**:概述Grails的整体架构设计,包括各个组件之间的关系及其工作原理。 5. **Artefact API**:介绍...

    grails-datastore-gorm-tck-1.0.9.RELEASE.zip

    标题 "grails-datastore-gorm-tck-1.0.9.RELEASE.zip" 提供的信息表明,这是一个与Grails框架相关的数据存储(Datastore)和GORM(Grails Object Relational Mapping)测试兼容性工具包(Test Compatibility Kit,...

    The Grails Framework - Reference Documentation

    - **验证安装**:在命令行中输入`grails`命令,如果出现Grails的帮助信息,则表示安装成功。 ##### 2.2 升级至最新版本 - **备份旧项目**:在升级前务必做好项目备份。 - **下载新版本**:访问官网下载最新版本。 -...

    Grails入门指南 -- 针对grails1.0.4更新

    - 随着Groovy和Grails的不断发展,未来将会有更多先进的特性和工具加入其中。 - 企业级应用领域对快速开发的需求将持续增长,Grails有望成为这一领域的强有力竞争者。 - 开发者可以期待Grails在未来为企业级应用...

    grails快速开发web

    - **实战技巧**:包括 GORM (Groovy Object Relational Mapping) 的使用、如何在 Grails 中实现 Ajax 功能、处理遗留数据库的方法、利用遗留框架以及如何在 Grails 中使用 WebFlow。 - **高效编程系列**:涵盖使用 ...

    Grails 中文参考手册

    - **下载安装Grails**:首先,你需要从官方渠道下载最新版本的Grails,并按照指导完成安装。 - **创建Grails应用**:通过命令行工具,你可以快速生成一个新的Grails应用结构。 - **Hello World**:这是一个简单的...

    springsource-tool-suite-3.9.5.RELEASE-e4.8.0-updatesite.zip

    4. **Groovy/Grails支持**:Groovy是Spring生态系统中的动态语言,Grails是一个基于Groovy的Web开发框架。STS提供了良好的Groovy和Grails开发环境。 5. **Git集成**:内置Git版本控制系统,方便团队协作和代码管理...

    grails-acegi-0.5.zip

    Grails Acegi 0.5插件正是基于这个理念,将Acegi Security的功能引入到Groovy语言和Grails框架中,使得Grails开发者也能享受到Spring Security的强大安全特性。 该插件的核心文件包括: 1. `AcegiGrailsPlugin....

Global site tag (gtag.js) - Google Analytics