Ginhu
Fevereiro 9, 2009, 2:21pm
#1
Galera,
Estou com o seguinte problema, estou usando o rich:fileupload, para subir um arquivo pro meu servidor de aplicação, certo ? Porém eu preciso criar um diretório com valor digitado no inputext (dsVersao), como faço para pegar esse valor na hora que estou fazendo o upload (versaoMB.upload) ?
<h:panelGrid id="pgVersao" columns="2" >
<h:outputText value="Status:" />
<rich:comboBox id="stVersao" defaultLabel="Selecione" size="30">
<f:selectItem itemValue="Ativo"/>
<f:selectItem itemValue="Inativo"/>
</rich:comboBox>
<h:outputText value="Descrição:" />
<h:inputText id="dsVersao" size="50" value="#{versaoMB.txtversao}" />
<h:outputText value="Build:" />
<h:inputText id="bdVersao" size="3" value="#{versaoMB.txtbuild}" />
<h:outputText value="Caminho:" />
<h:inputText id="camVersao" size="100" value="#{versaoMB.txtpath}" readonly="true" disabled="false" />
<h:outputText value="Arquivo:" />
<rich:fileUpload id="upload" acceptedTypes="war" listHeight="70px" listWidth="715px"
autoclear="false"
addControlLabel="Adicionar"
clearAllControlLabel="Remover"
stopControlLabel="Parar"
cancelEntryControlLabel="Parar"
uploadControlLabel="Transferir"
progressLabel="Transferindo..."
transferErrorLabel="Erro ao transferir arquivo"
doneLabel="Terminou"
rendered="true"
fileUploadListener="#{versaoMB.upload}">
<a4j:support event="onuploadcomplete" reRender="camVersao" />
<f:facet name="label">
<h:outputText value="{_KB}KB from {KB}KB tr --- {mm}:{ss}" />
</f:facet>
</rich:fileUpload>
</h:panelGrid>
Alguém tem uma luz ???
Obrigado
Ginhu
Fevereiro 9, 2009, 2:27pm
#3
Como faço isso ?? Sou novato nessas tecnologias !
rdgms
Fevereiro 9, 2009, 2:30pm
#4
O JSF possibilita você fazer binding… em qualquer componente oque possibilita você manipular o componente dentro no managed bean olha um exemplo ai:
http://javaplace.blogspot.com/2008/04/artigo-usando-o-component-fileupload-do.html
Ginhu
Fevereiro 9, 2009, 2:35pm
#5
Td bem, mas o problema é qdo eu tento pegar o valor da propriedade no managed bean, ele está 'null’
tendeu ? Meu bean está como ‘session’…
rdgms
Fevereiro 9, 2009, 2:41pm
#6
voce pode posta o seu codigo?
Ginhu
Fevereiro 9, 2009, 2:43pm
#7
Claro,
Segue meu MB:
package com.diebold.medial.configurador.web.controller;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import javax.annotation.Resource;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import org.richfaces.event.UploadEvent;
import org.richfaces.model.UploadItem;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.diebold.medial.configurador.db.dao.imp.VersaoDao;
import com.diebold.medial.configurador.db.entity.Versao;
import com.diebold.medial.configurador.util.FileManager;
import com.sun.facelets.FaceletContext;
@Controller("versaoMB")
@Scope("session")
public class VersaoMB {
@Resource
private VersaoDao versaoDao;
private Versao versao;
private String txtPesquisa = "";
private String txtversao = "";
private String txtbuild = "";
private String txtpath = "";
public VersaoMB() {
versao = new Versao();
}
public VersaoDao getVersaoDao() {
return versaoDao;
}
public void setVersaoDao(VersaoDao versaoDao) {
this.versaoDao = versaoDao;
}
public Versao getVersao() {
return versao;
}
public void setVersao(Versao versao) {
this.versao = versao;
}
public String getTxtPesquisa() {
return txtPesquisa;
}
public void setTxtPesquisa(String txtPesquisa) {
this.txtPesquisa = txtPesquisa;
}
// mostra todos do modelos
public List<Versao> getTodos() {
return versaoDao.findAll();
}
public Collection autocomplete(Object o) {
return null ;
}
public String getTxtversao() {
return txtversao;
}
public void setTxtversao(String txtversao) {
this.txtversao = txtversao;
}
public String getTxtbuild() {
return txtbuild;
}
public void setTxtbuild(String txtbuild) {
this.txtbuild = txtbuild;
}
public String getTxtpath() {
return txtpath;
}
public void setTxtpath(String txtpath) {
this.txtpath = txtpath;
}
public void upload(UploadEvent event) throws IOException, FileNotFoundException {
try {
String dsFolder = getTxtversao() + " " +getTxtbuild();
System.out.println("dsFodler: " + dsFolder);
FileManager fileManager = new FileManager();
UploadItem item = event.getUploadItem();
String caminho = fileManager.saveFile(item, dsFolder);
this.setTxtpath(caminho);
System.out.println("Caminho" + caminho);
} catch (Exception e) {
e.printStackTrace();
}
}
}