我试图将数据发送到支持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>