`
沙舟狼客
  • 浏览: 161774 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

grails的文件上传,集合迭代,标签

阅读更多

grails框架刚用起来,感觉听蹩脚的!处处碰壁,但是用了一段时间,习惯啦,废话少说,步入正题!

grails没用明显DAO层,我们能看到的对对象的增删查改操作,实际上不是groovy语言对象的特有操作,而是在应用grails之后,框架利用AOP功能自动给对象添加的 !所以在你没有启动grails程序时,你直接掉对象的数据库操作是错误的!但是我们需要批量插入数据怎么办,一个一个写吗?不用!

可以自定义一个Controller,启动后操作:

 

class TestDataController {
  def create={
    try{
      createData();
      println("创建成功!!!!");
    }catch (Exception e){
          e.printStackTrace();
    }
     render("测试数据插入——————————————————————————————");
  }
  public static  void createData(){
    println "****************";
    for (int i = 0; i < 50; i++) {
      User user = new User();
      user.name = "user" + i;
      user.password="password"+i;
      user.age = i;
      user.birth = new Date();
      user.sex = true;
      List<Book> books = new ArrayList<Book>();
      for (int j = 0; j < 100; j++) {
        Book tmp = new Book();
        tmp.name = "book" + j + ":" + i;
        tmp.price = j * 100.32;
        books.add(tmp);
        if(j == 50)
          println "-----------"+tmp;
      }
      user.books = books;
      user.save(flush:true);
    }
  }
}

 

 这是我的TestDataController.groovy文件,就是插入测试数据的(注意数据插入是所有属性默认是不允许为空的)!

但是怎么能通过浏览器调用这个Controller呢?这时就要配置UrlMappings.groovy文件了

 

class UrlMappings {

  static mappings = {
    "/testData" {
      //这个与Controller中的TestDataController的前半部分对应,切忌这是约定,必须这样写
      controller: "testData";
      //对应TestDataController中的create操作
      action: "create";
    }
  }
}

 接下来就是访问啦:http://localhost:8080/项目名/testData

select标签和迭代标签的应用:

 

<g:each in="${list}">
    <ul>
    <li>姓名: ${it.name}</li>
    <li>性别: <g:formatBoolean boolean="${it.sex}" true="男" false="女"/></li>
    <li>年龄: ${it.age}</li>
    <li>生日:<g:formatDate date="${it.birth}" format="yyyy年MM月dd日"/></li>
    <li>密码: ${it.password}</li>
    </ul>
  </g:each>
  <hr/>
 <g:select from="${list}" id="userID"  name="userID" optionKey="id" optionValue="name" value="2"></g:select>

 一看便知${}引用当前上下文中变量。这个与JSTL中的用法相似;


<g:each in="${要迭代的集合}">

${it},代指每次循环的变量

<g:formatBoolean>和<g:formatDate>我就不再说了,很简单格式化文本的,

<g:select>上面输出对应的html文本代码是:

 

<select name="userID" id="userID" >
     <option value="1" >test1</option>
</select>

from:那个集合

id和name是html代码中的属性

optionKey:每个option的value

optionValue:每个option中要显示的文本值

value:默认哪个optionKey被选中?

 文件上传:

 

class FileUploadController {
    def upload={
//myFile对应表单中input type=“file”的name值
       def f = request.getFile("myFile");
//判断是否等到文件
       if(!f.empty){
//获得原始的文件名
            String fileName=f.getOriginalFilename();
//获得文件的大小(默认单位是B)和类型
            println(new Date().toString()+"--name:"+fileName+";size:"+(f.size/1024)+"kb;type:"+f.contentType);
//文件要保存在哪个目录
            String filePath="web-app/upload/";
//开始写入,比Java简单多了吧!
            f.transferTo(new File(filePath+fileName));
//render在这里与response.getWriter().println很相似
          render("上传成功!");
       }else {
          render("上传失败!");
       }
    }
}

 gsp文件内容

 

 <g:uploadForm action="upload" controller="fileUpload" >
       文件:<input type="file" name="myFile" id="myFile"/>
        <g:submitButton name="submit" value="开始上传"/>
 </g:uploadForm>

 对应的HTML代码:

 

 <form action="/grails1/fileUpload/upload" method="post" enctype="multipart/form-data" >

       文件:<input type="file" name="myFile" id="myFile"/>

        <input type="submit" name="submit" value="开始上传" id="submit" />

    </form>

 这个我就不用解释了,太简单了!

 

 

分享到:
评论

相关推荐

    Grails结合uploadify上传文件的简单代码

    在本文中,我们将深入探讨如何在Grails框架中结合uploadify插件实现文件上传功能。Grails是一款基于Groovy语言的、高效的Web应用开发框架,它简化了Java平台上的开发流程。uploadify则是一个JavaScript库,它允许...

    Grails标签

    Grails标签 主要介绍了grails的标签的一个帮助文档

    grails中的上传,下载

    在Grails框架中,文件的上传与下载是常见的功能需求,尤其在开发涉及大量文档、图片或媒体文件处理的应用程序时。以下是对Grails中上传和下载操作的深入解析,包括其实现机制、代码示例及注意事项。 ### 文件上传 ...

    Grails入门指南书籍和源码----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    Grails入门指南书籍和源码----下载不扣分,回帖加1分,欢迎下载,童叟无欺 getting started with grails chinese Grails入门指南书籍和源码----下载不扣分,回帖加1分,欢迎下载,童叟无欺 getting started with ...

    grails 文档

    Grails 支持多语言环境,通过i18n资源文件,轻松实现应用的国际化和本地化。 11. **模板引擎与标签库** GSP(Groovy Server Pages)支持自定义标签库,使得视图层逻辑更加清晰,同时提供了内置的标签,如`g:form`...

    Grails权威指南

     8.2 grails内置标签  8.2.1 使用标签来设置变量  8.2.2 逻辑标签  8.2.3 迭代标签  8.2.4 过滤器和迭代  8.3 grails动态标签  8.3.1 链接标签  8.3.2 创建表单和字段  8.3.3 ...

    grails-用户手册

    Grails使用Gradle作为构建工具,提供了`grails war` 命令生成可部署的WAR文件,方便在各种Java应用服务器上部署。 九、测试 Grails内置了测试框架,支持单元测试、集成测试和功能测试。通过`test-app` 命令,可以...

    Eclipse下搭建Grails项目

    - 在Eclipse的classpath variable中设置`GRAILS_HOME`变量,指向Grails的安装目录,避免在创建或导入项目时手动添加库文件。 - 在`Windows -&gt; Preferences -&gt; Groovy`中,勾选"Disable Groovy Compiler Generating...

    Grails Grails Grails

    **Grails 框架详解** Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式...

    eclipse插件grails(groovy)

    Eclipse 插件 Grails(Groovy)是一个强大的开发工具,它使得在Eclipse环境中进行Groovy和Grails应用的开发变得更为便捷。Groovy是一种动态、面向对象的编程语言,而Grails则是一个基于Groovy的开源Web应用框架,...

    Grails从零开始开发项目二

    例如,`&lt;g:each&gt;`标签用于遍历集合,`&lt;g:link&gt;`用于创建链接,这些都是Grails特有的标签库,极大地简化了视图开发。 "groovy.acp"和"groovy.stx"可能是Groovy源代码或模板文件。在Grails项目中,Groovy源代码通常...

    grails快速开发web

    #### 三、Grails 的配置文件位置 在 Grails 0.6+ 版本中,各种配置文件的位置如下: - **数据源配置**:位于 `grails-app/conf/DataSource.groovy` 文件中。 - **日志配置**:位于 `grails-app/conf/Config.groovy...

    eclipse开发grails插件

    6. **使用eclipse运行grails项目.xlsx**:这个文件可能是项目配置或者步骤指南,包含了运行Grails项目的具体步骤和注意事项。打开查看,以便更好地理解项目的运行流程。 7. **GroovyEclipse.zip**:这个文件可能...

    Grails权威指南 Grails权威指南

    《Grails权威指南》是一本全面深入探讨Grails框架的专著,旨在帮助读者掌握这一强大的Web开发工具。Grails是一种基于Groovy语言的开源框架,它为构建现代、高效的应用程序提供了简洁高效的解决方案。本指南针对不同...

    grails 中文文档+grails-fckeditor-0.9.5.zip插件

    3. 扩展性:FCKEditor插件可以与其他Grails插件(如文件上传插件)配合使用,提供更强大的功能,如图片管理和多媒体资源管理。 4. 版本兼容:虽然grails-fckeditor-0.9.5是较旧的版本,但理解其工作原理有助于我们...

    grails中文入门简介

    Grails框架的配置通常通过内置选项和外部文件来完成。例如,数据源的配置既可以在环境配置中直接设置,也可以通过JNDI数据源来管理。此外,还可以配置自动数据库移植功能,它会在应用启动时根据域类(domain class)...

    grails-2.4.4.zip

    部署时,通常会将Grails应用打包成WAR文件,部署在Tomcat、Jetty等Servlet容器上。 8. **最佳实践** 在实际开发中,了解并遵循Grails的最佳实践至关重要,例如,合理划分领域模型、充分利用GSP标签库、使用Service...

    grails ajax

    在Grails中,我们可以使用内置的GSP(Grails Server Pages)标签库来简化Ajax调用。例如,`remoteFunction`标签可以轻松创建Ajax请求,它接受各种参数,如URL、方法类型(GET或POST)、回调函数等。这样,开发者可以...

Global site tag (gtag.js) - Google Analytics