`
may_cauc
  • 浏览: 43774 次
社区版块
存档分类
最新评论

Seam 对下载文件的支持

阅读更多

来源: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.

分享到:
评论

相关推荐

    jboss seam 中文文档集合

    这个文档集合包含了对Seam及其相关技术的详尽介绍,帮助开发者深入了解并有效地使用Seam。 **1. Seam Reference** Seam Reference 提供了Seam框架的完整指南,包括英文版和中文版。中文版的Seam_2.0_Reference_zh_...

    Seam框架文档简述

    除了JBPM(一个用于业务流程管理的工具)之外,Seam还支持与其他常用的工具和组件如Spring、邮件发送、权限管理等进行集成,从而增强应用的功能。 #### 三、Seam框架的功能与特点 ##### 1. 一站式(FullStack)的...

    jboss-seam2.0文档

    Seam 2.0的核心特性包括组件模型、事件驱动、以及对Java EE服务的深度集成。它将EJB、JSF、CDI(Contexts and Dependency Injection)、JPA(Java Persistence API)等多个技术融合在一起,使得开发者可以更加专注于...

    Jboss seam3 实战

    标签“源码 工具”暗示文章可能包含对JBoss Seam框架源码的分析以及工具使用方面的信息。 从部分内容来看,文章可能由名为JeffreyJia的作者撰写,提到了一些JBoss Seam3的关键概念和相关技术,同时也提到了构建工具...

    jboss seam 2.01GA REF DOC

    ### JBoss Seam 2.01GA REF DOC #### 引言:JBoss Seam概览与功能介绍 JBoss Seam 是一个为简化企业级 Java 应用开发而...以上是对 JBoss Seam 2.01GA REF DOC 的详细解读,希望对您理解和掌握 JBoss Seam 有所帮助。

    seam2.0 中文文档

    4. **集成JPA**:Seam 对JPA有着深度集成,使得数据访问和对象关系映射变得更加简单。它提供了事务管理,以及在JSF页面上直接显示和操作数据库记录的能力。 5. **与JSF的无缝结合**:Seam 和JavaServer Faces 集成...

    Seam_2.0_Reference_zh_CN

    8. **测试与调试**:Seam支持单元测试和集成测试,通过其测试框架可以方便地对应用程序进行验证。它还提供了强大的日志和调试工具,帮助开发者快速定位和解决问题。 9. **国际化与本地化**:Seam支持多语言环境,...

    seam2.1说明文档

    通过以上对 Seam 2.1 的详细介绍和实战案例分析,我们可以看出 Seam 2.1 不仅提供了强大的功能和灵活性,还极大地简化了企业级应用的开发过程。无论是初学者还是经验丰富的开发人员,都能够从中受益匪浅。

    Seam2.0学习文档

    以下是对Seam 2.0学习文档中的关键知识点的详细说明: 1. **Context(上下文)管理**:Seam 提供了一个灵活的上下文模型,允许开发者在不同层面上管理和访问对象。这包括请求上下文、会话上下文和应用上下文。请求...

    jsf-seam-jpa文档

    7. **避免XML滥用**:通过注解,Seam减轻了对XML配置文件的依赖,降低了维护成本。 8. **Web 2.0支持**:Seam提供的组件和标签支持创建更具交互性的Web应用,符合现代Web应用的趋势。 Seam的这些特性使得它在企业...

    jboss seam 中文文档

    ### JBoss Seam 中文文档知识点概述 #### 一、JBoss Seam 简介 JBoss Seam 是一款基于 Java EE 的应用开发框架,它通过提供一套丰富的组件模型和灵活的应用结构,极大地简化了企业级应用的开发过程。Seam 结合了 ...

    Jboss_seam 中英文文档

    1. **安装和配置**:介绍如何设置开发环境,包括下载、安装和配置Seam以及相关的Java EE服务器,如JBoss Application Server。 2. **快速入门**:提供一个简单的示例,帮助初学者快速理解Seam的基本概念和工作流程...

    Seam security

    3. 身份管理与OpenID:Seam Security还提供身份管理支持,包括对OpenID的支持,这是一种流行的单点登录(SSO)解决方案。 4. 授权与权限管理:授权是确定谁可以访问特定资源的过程。Seam Security提供了一套权限...

    为Seam做好准备

    6. **Seam配置**:`seam-getting-started-build.xml`文件很可能是Seam项目的构建文件,可能包含Maven或Ant的配置信息,用于编译、测试和打包项目。理解如何配置Seam项目以及依赖管理是非常重要的。 7. **开发环境**...

    seam需要的jar包

    此外,`seam-persistence.jar`可能包含Seam对JPA(Java Persistence API)的支持,用于数据库持久化操作。 为了支持测试和调试,压缩包可能还包括`jboss-as-server.jar`或类似的文件,它们与特定的应用服务器(如...

    SEAM 中文开发指南

    - **版本信息**:本文档介绍了 SEAM 2.0 GA 版本的功能特性及其使用方法。 #### 二、SEAM 入门指南 ##### 1.1 尝试 SEAM - **环境搭建**: - 在 **JBoss AS** 上运行示例。 - 在 **Tomcat服务器** 上运行示例。...

    Seam - 语境相关的组件

    文件"Seam - 语境相关的组件.pdf"很可能是Seam框架深入学习的教程或指南,涵盖了上述概念的详细解释和示例。通过阅读这份资料,你应该能掌握Seam框架如何利用语境相关的组件来优化Java EE应用的开发,以及如何在实际...

Global site tag (gtag.js) - Google Analytics