论坛首页 Java企业应用论坛

(F1)Tapestry Upload:Tapestry Upload Component

浏览 4379 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-06-23  
本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf  
Tapestry 上传组件
Tapestry提供了一个基于Jakarata Commons FileUpload的文件上传组件。
用法
Upload组件支持默认值的绑定(基于id)和验证。
组件模板
  1. <t:form>  
  2.        <t:errors/>  
  3.        <input t:type="upload" t:id="file" validate="required"/>  
  4.        <br/>  
  5.        <input type="submit" value="Upload"/>  
  6.    </t:form>  
   
这里,因为value参数没有被绑定,这个组件使用它的容器的文件属性(因为组件的id”file”)。如果你想要上传一个不同的属性,可以绑定value参数或改变组件的id.
 
页面类
  1. public class UploadExample   
  2.     {   
  3.         private UploadedFile _file;   
  4.     
  5.         public UploadedFile getFile()   
  6.         {   
  7.             return _file;   
  8.         }   
  9.     
  10.         public void setFile(UploadedFile file)   
  11.         {   
  12.             _file = file;   
  13.         }   
  14.     
  15.         public void onSuccess()   
  16.         {   
  17.             File copied = new File("/my/file/location/" + _file.getFileName());   
  18.                
  19.             _file.write(copied);   
  20.         }   
  21.     }   
   
潜在的问题
这个通用的文件上传库使用CommonsIO文件清除器服务在他们不再需要的时候移除临时文件。这个服务创建了一个线程来完成这个工作。如果commons-io库被共享在多个应用中(例如增加服务器CLASSPATH)。它可能为一个应用过早的对另一个应用终止这个线程并引发错误。(Resource Cleanup工作组进行更多的讨论
技术上文件清除服务不是Tapestry Upload必需的(在请求结尾处删除临时文件)。然而目前不可能去废除它(改进请求已经作为FILEUPLOAD-133提出)。
   发表时间:2007-09-10  
File copied = new File("/my/file/location/" + _file.getFileName());   
_file.write(copied);
T5上传文件这么简单了?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics