来源:http://hi.baidu.com/jsfcn/blog/item/011faf0fc2cff6eaab64578f.html
在很多web应用中,用户都可以下载文件.Seam 2.1.1.CR1
添加了对下载文件的支持,通过s:resource
和s:download标签可以很容易的创建restful的链接.要使用该功能,需要先做些配置.s:resource标签使用Seam的
DocumentStore来做文档服务,需要把该服务添加到web.xml文件中去.
web.xml
<servlet>
<servlet-name>Document Store Servlet</servlet-name>
<servlet-class>org.jboss.seam.document.DocumentStoreServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Document Store Servlet</servlet-name>
<url-pattern/seam/docstore/*</url-pattern>
</servlet-mapping>
在页面中, s:resource将作为文件下载提供者来定义在那里得到文件数据和meta-data描述信息.该页面应该和下面页面相似:
resources.xhtml
<s:resource xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
data="#{resources.data}"
contentType="#{resources.contentType}"
fileName="#{resources.fileName}" />
- data 实际的文件数据. 可以为 java.util.File, 一个 InputStream 或则一个 byte[].
- contentType, e.g. “image/jpeg”.
- filename, e.g. “someFile.jpg”
其他参数请参考用户手册.
现在 resource.xhtml 将为下载文件服务,我们还需要传递一些参数来请求特定的文档.通过请求参数来实现该功能.例如:
http://localhost/app/resources.seam?fileId=1. 现在有2种方式来把参数设置到
resources.xhtml的backing bean中,可以通过 @RequestParameter
annotation或则页面定义参数.
@RequestParameter
private Long fileId;
或则在 pages.xml 中
<page view-id=”/resources.xhtml”>
<param name="fileId" value="#{resources.fileId }"/>
</page>
Resources.java 代码如下:
@Name("resources")
@Scope(ScopeType.EVENT)
public class Resources
{
@RequestParameter
private String id;
private String fileName;
private String contentType;
private byte[] data;
@Create
public void create()
{
FileItem item = em.find(FileItem.class, fileId); // Get document representation
this.fileName = item.getFileName();
this.data = item.getData();
this.contentType = item.getContentType();
}
//.. getters setters
}
这样就可以通过restful方式来下载文件了,为了让下载文件更加方便,这里还有个s:download标签. 下面是使用示例:
<s:download src=”/resources.xhtml”>
<f:param name=”fileId” value=”#{someBean.downloadableFileId}”/>
</s:download>
这样就可以生成一个下载链接: http://localhost/resources.seam?fileId=1.
分享到:
相关推荐
这个文档集合包含了对Seam及其相关技术的详尽介绍,帮助开发者深入了解并有效地使用Seam。 **1. Seam Reference** Seam Reference 提供了Seam框架的完整指南,包括英文版和中文版。中文版的Seam_2.0_Reference_zh_...
除了JBPM(一个用于业务流程管理的工具)之外,Seam还支持与其他常用的工具和组件如Spring、邮件发送、权限管理等进行集成,从而增强应用的功能。 #### 三、Seam框架的功能与特点 ##### 1. 一站式(FullStack)的...
Seam 2.0的核心特性包括组件模型、事件驱动、以及对Java EE服务的深度集成。它将EJB、JSF、CDI(Contexts and Dependency Injection)、JPA(Java Persistence API)等多个技术融合在一起,使得开发者可以更加专注于...
标签“源码 工具”暗示文章可能包含对JBoss Seam框架源码的分析以及工具使用方面的信息。 从部分内容来看,文章可能由名为JeffreyJia的作者撰写,提到了一些JBoss Seam3的关键概念和相关技术,同时也提到了构建工具...
### JBoss Seam 2.01GA REF DOC #### 引言:JBoss Seam概览与功能介绍 JBoss Seam 是一个为简化企业级 Java 应用开发而...以上是对 JBoss Seam 2.01GA REF DOC 的详细解读,希望对您理解和掌握 JBoss Seam 有所帮助。
4. **集成JPA**:Seam 对JPA有着深度集成,使得数据访问和对象关系映射变得更加简单。它提供了事务管理,以及在JSF页面上直接显示和操作数据库记录的能力。 5. **与JSF的无缝结合**:Seam 和JavaServer Faces 集成...
8. **测试与调试**:Seam支持单元测试和集成测试,通过其测试框架可以方便地对应用程序进行验证。它还提供了强大的日志和调试工具,帮助开发者快速定位和解决问题。 9. **国际化与本地化**:Seam支持多语言环境,...
通过以上对 Seam 2.1 的详细介绍和实战案例分析,我们可以看出 Seam 2.1 不仅提供了强大的功能和灵活性,还极大地简化了企业级应用的开发过程。无论是初学者还是经验丰富的开发人员,都能够从中受益匪浅。
以下是对Seam 2.0学习文档中的关键知识点的详细说明: 1. **Context(上下文)管理**:Seam 提供了一个灵活的上下文模型,允许开发者在不同层面上管理和访问对象。这包括请求上下文、会话上下文和应用上下文。请求...
7. **避免XML滥用**:通过注解,Seam减轻了对XML配置文件的依赖,降低了维护成本。 8. **Web 2.0支持**:Seam提供的组件和标签支持创建更具交互性的Web应用,符合现代Web应用的趋势。 Seam的这些特性使得它在企业...
### JBoss Seam 中文文档知识点概述 #### 一、JBoss Seam 简介 JBoss Seam 是一款基于 Java EE 的应用开发框架,它通过提供一套丰富的组件模型和灵活的应用结构,极大地简化了企业级应用的开发过程。Seam 结合了 ...
1. **安装和配置**:介绍如何设置开发环境,包括下载、安装和配置Seam以及相关的Java EE服务器,如JBoss Application Server。 2. **快速入门**:提供一个简单的示例,帮助初学者快速理解Seam的基本概念和工作流程...
3. 身份管理与OpenID:Seam Security还提供身份管理支持,包括对OpenID的支持,这是一种流行的单点登录(SSO)解决方案。 4. 授权与权限管理:授权是确定谁可以访问特定资源的过程。Seam Security提供了一套权限...
6. **Seam配置**:`seam-getting-started-build.xml`文件很可能是Seam项目的构建文件,可能包含Maven或Ant的配置信息,用于编译、测试和打包项目。理解如何配置Seam项目以及依赖管理是非常重要的。 7. **开发环境**...
此外,`seam-persistence.jar`可能包含Seam对JPA(Java Persistence API)的支持,用于数据库持久化操作。 为了支持测试和调试,压缩包可能还包括`jboss-as-server.jar`或类似的文件,它们与特定的应用服务器(如...
- **版本信息**:本文档介绍了 SEAM 2.0 GA 版本的功能特性及其使用方法。 #### 二、SEAM 入门指南 ##### 1.1 尝试 SEAM - **环境搭建**: - 在 **JBoss AS** 上运行示例。 - 在 **Tomcat服务器** 上运行示例。...
文件"Seam - 语境相关的组件.pdf"很可能是Seam框架深入学习的教程或指南,涵盖了上述概念的详细解释和示例。通过阅读这份资料,你应该能掌握Seam框架如何利用语境相关的组件来优化Java EE应用的开发,以及如何在实际...