提交后如何清除t:inputFileUpload

时间:2018-05-09 15:10:07

标签: html jsf tomahawk

我试图将数据发送到支持bean但是在表单提交并获得响应之后,在浏览器中输入文件数据仍然存在于页面中,即使你看不到,我注意到在按下之后页面中显示F5,数据已重新提交......

在backbean中,我在方法的finally块中将相应的值设置为null。 bean在faces config中定义为ViewScoped。

package co.com.ibm.acobros.managedbean;

import java.io.IOException;
import java.sql.SQLException;
import java.util.Map.Entry;

import javax.ejb.EJB;

import org.apache.myfaces.custom.fileupload.UploadedFile;

import co.com.ibm.acobros.gestorbean.GestionParametrosEJB;
import co.com.ibm.acobros.model.vo.VOCargueSegmento;
import co.com.ibm.acobros.utilidades.UtilitariosLOB;

public class SegmentosMB
{

private String idProceso;
private Long resultadoCargue;
private UploadedFile file;
@EJB
GestionParametrosEJB gestionParametrosEJB;

public void submit() throws IOException
{

VOCargueSegmento cargue = new VOCargueSegmento();

try
{
   cargue.setArchivoCargue(UtilitariosLOB.uploadedFileToCLOB(file.getInputStream()));
    cargue.setNombreArchivo(file.getContentType());
    cargue.setIdAutenticacion(1L);
    Entry<Long, String> r = (Entry<Long, String>) gestionParametrosEJB.cargarSegmentos(cargue);
    resultadoCargue = r.getKey();
    idProceso = r.getValue();
}
catch (SQLException | IllegalStateException e)
{
    e.printStackTrace();
}
finally
{
    file = null;
}
}

public UploadedFile getFile()
{
return file;
}

public void setFile(UploadedFile file)
{
this.file = file;
}

public Long getResultadoCargue()
{
return resultadoCargue;
}

public void setResultadoCargue(Long resultadoCargue)
{
this.resultadoCargue = resultadoCargue;
}

public String getIdProceso()
{
return idProceso;
}

public void setIdProceso(String idProceso)
{
this.idProceso = idProceso;
}

}

和视图......

<h:form enctype="multipart/form-data">
<t:inputFileUpload accept=".csv" value="#{segmentosMB.file}">
</t:inputFileUpload>
<h:commandButton value="#{general.importar}"
    class="btn btn-davivienda"
    actionListener="#{segmentosMB.submit()}">
</h:commandButton>

0 个答案:

没有答案