Tapestry4集成Oracle InterMedia

第一步:在web.xml配置interMedia的filter

< filter >
  
< filter-name > interMediaFilter </ filter-name >
  
< filter-class > oracle.ord.im.OrdMultipartFilter </ filter-class >
 
</ filter >
 
< filter-mapping >
  
< filter-name > interMediaFilter </ filter-name >
  
< url-pattern > /ord/* </ url-pattern >
 
</ filter-mapping >

 

第二步:定义自己的MultipartDecoderFilter

仿照tapestry的MultipartDecoderFilter,写自己的MultipartDecoderFilter(例如类名为org.MYMultipartDecoderFilter),自己写的filter和tapestry相比主要是判断request是否已被包装,如果被包装了就直接继续处理(见下列代码的if-else部分)

 

public   void  service(HttpServletRequest request,
   HttpServletResponse response, ServletRequestServicer servicer)
   
throws  IOException, ServletException  {
  String contentType 
= request.getContentType();

  
// contentType is occasionally null in testing. The browser tacks on additional
  
// information onto the contentType to indicate where the boundaries are in
  
// the stream.

  
boolean encoded = contentType != null
    
&& contentType.startsWith("multipart/form-data");

  
try {
   
//HttpServletRequest newRequest = encoded ? _decoder.decode(request) : request;
   HttpServletRequest newRequest = null;

   
if (request instanceof HttpServletRequestWrapper) {
    newRequest 
= request;
   }
 else {
    newRequest 
= encoded ? _decoder.decode(request) : request;
   }

   servicer.service(newRequest, response);
  }
 finally {
   
if (encoded)
    _decoder.cleanup();

   
// System.out.println("ttt");
  }

 }


 

在hivemodul中配置使用:

  < implementation service - id = " tapestry.multipart.ServletMultipartDecoderFilter " >
  Identifies upload requests and passes them to the MultipartDecoder service 
for  decoding.    
     
< invoke - factory >
       
< construct  class = " org.MyMultipartDecoderFilter " >
         
< set - service property = " decoder "  service - id = " tapestry.multipart.ServletMultipartDecoder " />
       
</ construct >
     
</ invoke - factory >     
  
</ implementation >

第三步:开始处理

页面中注入属性:

<inject property="requestGlobals" object="service:tapestry.globals.RequestGlobals" />  

html中使用表单的文件上传元素(input type="file" name="upload"/>)或upload组件

在页面类中即可得到interMedia类型的上传文件:

RequestGlobals obj  =   this .getRequestGlobals();
OrdMultipartWrapper obj1 
=  (OrdMultipartWrapper) obj.getRequest();  
OrdHttpUploadFile[] files 
=  obj1 .getFileParameterValues( " upload " );

 

你可能感兴趣的:(Tapestry4集成Oracle InterMedia)