精通Grails: 文件上传和Atom联合 - 编程入门网
Instance.filename}"> <p> <img
src="${createLinkTo(dir:''payload/''+entryInstance.author.login,
file:''''+entryInstance.filename)}"
alt="${entryInstance.filename}"
title="${entryInstance.filename}" /> </p>
</g:if></div>
由于上传文件是可选的,我将输出包含在一个 <g:if> 块中。如果 entryInstance.filename 字段被填充,则在一个 <img> 标记中显示结果。 图 2 显示新的列表,同时还在显眼的地方显示上传的 Grails 徽标: 图 2. 显示上传的图像 但是,如果用户上传其他东西,而不是图像呢?这时就不是将更多的逻辑放入到 GSP 中了,最好的地 方是一个定制的 TagLib。 精通Grails: 文件上传和Atom联合(7)时间:2011-08-02 IBM Scott Davis创建 TagLib Blogito 在 grails-app/taglib 中已经有两个 TagLib:DateTagLib.groovy 和 LoginTagLib.groovy 。在一个 TagLib 中可以定义任意数量的定制标记,但是这一次我建议创建一个新的 TagLib,以便按语 义将标记分组。在命令提示符下输入 grails create-tag-lib Entry,并添加清单 12 中的代码: 清单 12. 创建 displayFile 标记 class EntryTagLib { def displayFile = {attrs, body-> def user = attrs ["user"] def filename = attrs["filename"] if(filename) { def extension = filename.split("\\.")[-1] def userDir = "payload/${user}" switch(extension.toUpperCase()){ case ["JPG", "PNG", "GIF"]: def html = """ <p> <img src="${createLinkTo(dir:''''+userDir, file:''''+filename)}" alt="${filename}" title="${filename}" /> </p> """ out << html break case "HTML": out << "p>html</p>" break default: out << "<p>file</p>" break } }else{ out << "<!-- no file -->" } }} 精通Grails: 文件上传和Atom联合(8)时间:2011-08-02 IBM Scott Davis不久后可以看到,该代码创建一个 <g:displayFile> 标记,该标记需要两个属性:user 和 filename。如果 filename 属性被填充,则取得文件扩展名,并将其转换为大写形式。 Groovy 中的 Switch 语句比 Java 中的对等物的灵活性要大得多。首先,可以在 String 上进行切换 (而 Java 语言只能在 int 上进行切换)。更令人惊奇的是,case 既可以指定一个条件列表 List,也 可以指定单个的条件。 有了这个 TagLib 后,可以大大简化 _entry.gsp 局部模板,如清单 13 所示: 清单 13. 简化的局部模板 <div class="entry"> <span class="entry-date"> <g:longDate>${entryInstance.lastUpdated}</g:longDate> : ${entryInstance.author} </span> <h2><g:link action="show" id="${entryInstance.id}">${entryInstance.tit |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |