Utilizando File Upload para mais de um arquivo no JBoss Seam

Caros colegas,
estou com dúvidas na forma como proceder para permitir o envio de mais de um tipo de arquivo utilizando o componente <s:fileUpload>

<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:s="http://jboss.com/products/seam/taglib"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:rich="http://richfaces.org/rich"
    template="/layout/template.xhtml">

<ui:define name="body">

    <h:form id="eventoForm" enctype="multipart/form-data">

        <rich:panel>
            <f:facet name="header">#{messages['eventoFEES.eventoFEES.label']}</f:facet>
			
			<s:decorate id="descricaoField" template="/layout/edit.xhtml">
                <ui:define name="label">#{messages['eventoFEES.tituloApresentacao.label']}</ui:define>
                <h:inputText id="descricao" required="true"
                             value="#{eventoFEES.descricao}"/>
            </s:decorate>
			
			<s:decorate id="autorPrincipalHeader" template="/layout/edit.xhtml">
				<ui:define name="label">#{messages['eventoFEES.autorPrincipal.label']}</ui:define>
				<h:inputText id="autorPrincipal" value="#{eventoFEES.autorPrincipal}" required="true"/>
			</s:decorate>
			
			<s:decorate id="localField" template="/layout/edit.xhtml">
                <ui:define name="label">#{messages['eventoFEES.local.label']}</ui:define>
                <h:inputText id="local" 
                             value="#{eventoFEES.localRealizacao}"/>
            </s:decorate>
			
			

			<s:decorate id="resumoField" template="/layout/edit.xhtml">
                <ui:define name="label">#{messages['eventoFEES.resumo.label']}</ui:define>
                <h:inputTextarea id="resumo" required="true"
                             value="#{eventoFEES.resumo}"/>
            </s:decorate>
			
			<s:decorate id="publicacaoField" template="/layout/edit.xhtml">
                <ui:define name="label">#{messages['eventoFEES.artigo.label']}</ui:define>
                <s:fileUpload id="conteudo" data="#{publicacao.conteudo}" fileName="#{publicacao.nome}"/>
            </s:decorate>
			
            <div style="clear:both"/>

        </rich:panel>

        <div class="actionButtons">
            <h:commandButton id="save"
                             value="#{messages['comando.salvar']}"
                             action="#{administrarEventoFESSAction.inserirEventoFEES}"
                             rendered="#{!administrarEventoFESSAction.estadoEdicao}"/>
                             
            <h:commandButton id="update"
                             value="#{messages['comando.atualizar']}"
                             action="#{administrarEventoFESSAction.alterarEventoFEES}" 
                             rendered="#{administrarEventoFESSAction.estadoEdicao}"/>
			
            <h:commandButton id="delete"
                             value="#{messages['comando.excluir']}"
                             action="#{administrarEventoFESSAction.apagarEventoFEES}"
                             immediate="true"
                             rendered="#{administrarEventoFESSAction.estadoEdicao}"/>
            <s:button id="cancel"
                      value="#{messages['comando.voltar']}"
                      action="#{administrarEventoFESSAction.eventoFEESCancelar}"
                      view="/edicaoEventoFEES/visualizarEdicaoFEES.xhtml"/>
        </div>

    </h:form>

</ui:define>

</ui:composition>

Eis o componente publicacao

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;

import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.jboss.seam.annotations.Name;

@Entity
@Name("publicacao")
public class Publicacao implements Serializable
{
    /**
	 * 
	 */
	private static final long serialVersionUID = 5096349621953480365L;
	// seam-gen attributes (you should probably edit these)
    private Long id;
    private Integer version;
    private String nome;
    private String resumo;
    private String autor;
    private Date dataPublicacao;
    private String tipo;
    
    @NotNull
    public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	private byte[] conteudo;

    @Lob
    @Basic(fetch=FetchType.LAZY)
    public byte[] getConteudo() {
		return conteudo;
	}

	public void setConteudo(byte[] conteudo) {
		this.conteudo = conteudo;
	}

	@Id @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Version
    public Integer getVersion() {
        return version;
    }

    private void setVersion(Integer version) {
        this.version = version;
    }
    
    @NotNull
    @Length(max=100)
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    
	public String getResumo() {
		return resumo;
	}

	public void setResumo(String resumo) {
		this.resumo = resumo;
	}

	public String getAutor() {
		return autor;
	}

	public void setAutor(String autor) {
		this.autor = autor;
	}
	
	@Temporal(TemporalType.DATE)
	public Date getDataPublicacao() {
		return dataPublicacao;
	}

	public void setDataPublicacao(Date dataPublicacao) {
		this.dataPublicacao = dataPublicacao;
	}
}

Na página xhtml eu gostaria de adicionar mais um campo para conter a apresentação do evento (e não somente o artigo).
Mas se o nome do componente já foi definido como “publicacao”, como fazer para ter acesso a outra instância do objeto Publicacao?

Obrigado!

Boa tarde,

minha sugestão pra vc é criar uma lista de bytes e adicionar as fotos nessa lista…

att.