Demorou quase 10 anos para que implementassem um componente de upload no JSF. O componente h:inputFile
só foi criado na versão 2.2 da especificação. Apesar da longa espera, o componente já trouxe suporte nativo a AJAX e integração com a API do Servlet 3.
Utilizá-lo é tão simples quanto qualquer outro componente de entrada de dados, tanto é que podemos registrar conversores e validadores no componente de maneira semelhante. Além disso, basta usarmos a tag f:ajax
para submetermos o formulário via AJAX, ou seja, nada de JavaScript! Por exemplo, o código abaixo irá disparar uma requisição AJAX após selecionarmos o arquivo:
<html ... xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:form id="form" enctype="multipart/form-data"> <h:outputLabel value="Arquivo" for="arquivo" /> <h:inputFile id="arquivo" value="#{importadorBean.arquivo}" required="true" label="Arquivo" /> <h:commandButton value="Importar" action="#{importadorBean.importa}" /> </h:form> </html>
Vale a pena conhecer o componente h:inputFile
e ficar por dentro das suas atuais limitações que serão resolvidas em versões futuras do JSF.
O componente de upload de arquivos e muitas outras novidades do JSF 2.2 são exploradas no nosso curso de JSF 2 com Spring.