由于项目的上的需要,需要在portal 页面上上传多个文件,而前面的实现都只是上传一个文件,使用的是spring提供的 MultipartFile类。项目中使用的是spring2.5, 在http://static.springsource.org/spring/docs/1.2.x/reference/mvc.html上面也没找到上传多个文件的实现例子。
下面先介绍下上传单个文件的实现:
在项目中定义的bean为:
<bean id="portletMultipartResolver"
class="org.springframework.web.portlet.multipart.CommonsPortletMultipartResolver">
<property name="maxUploadSize" value="10000000"/>
</bean>
使用的controller extends SimpleFormController 具体的控制器配置为:
<beanid="sendMailController"class="com.ge.oilandgas.smartportal.quote.controller.SendMailController">
<propertyname="mailSender"ref="mailSender"/>
<property name="commandClass" value="com.ge.oilandgas.smartportal.quote.contextbean.AttachmentFileUploadBen"/>
<propertyname="utility"ref="utility"/>
</bean>
在代码中的实现为
publicvoid onSubmitAction( ActionRequest request,
ActionResponse response,
Object command,
BindException errors) throws Exception {
// cast the bean
AttachmentFileUploadBean bean = (AttachmentFileUploadBean) command;
// get the attached file
MultipartFile attachedfile = bean.getAttachmentFile(); //这样就能得到上传的文件的信息了
}
多个文件上传的实现方法:
上网查找了不少资料,最终找到了一篇外国的文章:
http://dhruba.name/2008/12/27/implementing-single-and-multiple-file-multipart-uploads-using-spring-25/ 里面讲的很清楚。但是我这里没有使用上面那篇文章的方法,不过方式差不多。
1:首先让contrller extends AbstractController
2:在其处理action请求的方法中 添加一个获取多文件的方法:
protectedvoid handleActionRequestInternal(ActionRequest request,
ActionResponse response) throws Exception {
public Map<String,MultipartFile> getAttachmentsMap(ActionRequest request ) throws Exception {
Map<String,MultipartFile> MailAttachFilesMap = new HashMap<String,MultipartFile>();
if (request instanceof MultipartActionRequest) {
logger.debug("==================MulitiPart Request====================");
MultipartActionRequest multipartRequest = (MultipartActionRequest) request;
Map files = multipartRequest.getFileMap();
String fileName = "";
String key = "";
MultipartFile attachedFile = null;
if (files!=null && files.isEmpty() != true && files.size()>0 ) {
for (Iterator fileMapIter = files.keySet().iterator(); fileMapIter.hasNext();)
{
key = (String) fileMapIter.next();
attachedFile = (MultipartFile)(multipartRequest.getFileMap().get(key));
fileName = attachedFile.getOriginalFilename();
MailAttachFilesMap.put(fileName, attachedFile);
System.out.println("===========key======="+key+" ==================== "+fileName);
}
}
}
return MailAttachFilesMap;
}
}
主要是将 request转换为:MultipartActionRequest 。
相关推荐
【JBoss Portlet实现文件上传小项目】 在Java企业级应用开发中,JBoss Portal是一个常用的portlet容器,它提供了一个可扩展的平台来构建、部署和管理web应用程序,特别是portlet应用。Portlets是portlet容器中的...
文件上载Portlet是Web应用程序中的一个组件,主要用于在用户界面上接收并处理用户上传的文件。Portlet是Java Portlet API定义的一种可重用、可组合的Web部件,它在门户环境中运行,如Liferay、Pluto等。在这个特定的...
内含源码,经IBM websphere portal6测试,供大家参考
portlet-api-1.0.jar,portlet的API,portlet.jar文件
在portlet开发中,`META-INF`目录通常包含portlet的元数据,如`MANIFEST.MF`文件,其中描述了portlet的元信息和依赖库。而`javax`目录可能包含了portlet API的相关类库,这些都是开发portlet应用所必需的。 总的来...
6. 打包和部署:将portlet打包成WAR文件,上传到portal服务器进行正式部署。 五、学习资源 对于初学者,可以从以下资源入手学习portlet开发: 1. Java Portlet API文档:官方文档提供了详细的API参考和使用指南。...
Portlet开发参考手册是针对portlet技术的一份详细指南,它为开发者提供了全面的指导,以帮助他们构建和集成portlet到Web门户中。Portlet是一种可重用的Web组件,它们在门户环境中运行,允许用户自定义门户界面,展示...
3. **部署portlet**:将portlet的WAR文件上传到Stringbeans的部署目录,或者通过管理界面进行部署。在某些情况下,可能需要手动复制必要的jar包到Stringbeans的类路径中。 4. **门户配置**:在Stringbeans的门户...
Portlet的生命周期包括初始化、渲染、处理用户动作等多个阶段,这些阶段由Portlet Container管理。用户与Portlet的交互通过HTTP请求/响应模型进行,例如,点击链接或提交表单会触发特定Portlet的动作。 **3. ...
Portlet部署通常涉及到打包portlet为WAR文件,并将其上传到门户服务器的部署目录。portlet的配置信息通常包含在部署描述符(如portlet.xml)中。 11. **portlet开发工具**: 开发portlet可以使用Eclipse、...
总结一下,使用Spring MVC Portlet 3.0开发IBM WebSphere Portlet应用涉及的主要知识点有: - Portlet 3.0标准和JSR 362 - Spring MVC Portlet框架的原理与应用 - IBM WebSphere Portal的环境配置与部署 - Spring ...
1. Portlet配置:在portlet.xml文件中定义portlet的元数据,如portlet名称、标题、属性等。 2. JSP页面:portlet视图通常由JSP页面呈现,通过`renderRequest`和`renderResponse`对象传递数据。 3. 表单处理:对于...
Portlet与传统的Web应用不同,它并不处理整个页面,而是与多个其他Portlets一起协作构建一个完整的Web页面。每个Portlet有自己的生命周期,包括初始化、渲染、事件处理和动作请求等阶段。在"HelloWorld"工程中,我们...
在WEB-INF目录下创建portlet.xml文件,它是portlet的元数据配置,定义portlet的行为和参数。XML文件中,你需要指定portlet的名称、标题、以及实现的portlet类等信息。这个文件是portlet注册到portlet容器的关键。 ...
Portlet是一种在门户环境下运行的小型应用程序,它允许在单一的网页界面上集成多个功能模块。这个"portlet详细例子"的资源包显然旨在帮助开发者理解并实践portlet的开发。Portlet技术主要应用于企业级的Web应用,如...
2. **portlet配置**:portlet可以通过portlet.xml文件进行配置,其中包含了portlet的元数据,如标题、描述、参数设置等。 3. **渲染上下文**:PortletRenderContext对象在渲染阶段传递,包含了portlet渲染所需的上...
4. **portlet配置**:portlet的配置信息存储在portlet.xml文件中,定义portlet的元数据和初始化参数。 二、IBM Portlet开发 IBM作为Java技术的重要贡献者,其WebSphere Portal产品支持JSR168 portlet的开发。IBM...
- Portlet通过portlet容器来管理,容器负责处理用户的请求,提供渲染机制,并协调多个portlet之间的交互。 2. **Portlet规范**: - 提供的文件“portlet-1_0-pfd-spec.pdf”很可能是一个关于Portlet 1.0规范的...
7. **portlet部署**:portlet通常被打包为一个WAR文件,然后部署到portlet容器中。portlet的配置信息,如portlet.xml,定义了portlet的基本信息和行为。 8. **portlet开发工具**:开发portlet可以使用各种IDE,如...