Ajuda por favor, urgente blob + jsf

7 respostas
L

Boa tarde galera, estou com uma duvida, seguinte ja tentei de tudo e estou pelo segundo dia impacado,
seguinte tenho um datatable:

<rich:dataTable value="#{usuarioHandler.listaUsuarios}" var="c"
						rows="20" id="tableNovoAmigo" width="100%"
						onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
						onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
						rendered="#{usuarioHandler.novoAmigo}">
						<f:facet name="header">
							<rich:columnGroup>
								<rich:column colspan="100">
									<h:outputText value="Lista de Usuarios"
										rendered="#{usuarioHandler.novoAmigo}" />
									<h:outputText value="Lista de Amigos"
										rendered="#{!usuarioHandler.novoAmigo}" />
								</rich:column>
								<rich:column breakBefore="true">
									<h:outputText value="Foto" />
								</rich:column>
								<rich:column>
									<h:outputText value="Nome" />
								</rich:column>
								<rich:column>
									<h:outputText value="Email" />
								</rich:column>
								<rich:column>
									<h:outputText value="Último acesso" />
								</rich:column>
								<rich:column>
									<h:outputText value="Data Cadastro" />
								</rich:column>
							</rich:columnGroup>
						</f:facet>

						<rich:column>
							<OBJECT id="image" data="${usuarioHandler.urlImage}" width="100"
								height="100"> </OBJECT>
						</rich:column>

						<rich:column filterBy="#{c.nome}" filterEvent="onkeyup">
							<f:facet name="header">
								<h:outputText value=" " title="Chave de busca!" id="chave"></h:outputText>
							</f:facet>
							<h:outputText value="#{c.nome}" />
							<f:param value="#{c.idUsuario}" name="idEdit" id="id" />
						</rich:column>

						<rich:column width="190">
							<h:outputText value="#{c.email}"></h:outputText>
						</rich:column>

						<rich:column width="60px">
							<h:outputText value="#{c.dataUltimoAcesso}">
								<f:convertDateTime pattern="dd/MM/yyyy hh:mm" />
							</h:outputText>
						</rich:column>
						<rich:column width="60px">
							<h:outputText value="#{c.dataCadastro}">
								<f:convertDateTime pattern="dd/MM/yyyy" />
							</h:outputText>
						</rich:column>
						<a4j:support event="onRowDblClick"
							actionListener="#{usuarioHandler.loadAmigo}"
							id="supportLoadAmigoNovo" action="home" reRender="outputMsg" />
						<f:facet name="footer">
							<rich:datascroller id="dsAmigoNovo" renderIfSinglePage="false"></rich:datascroller>
						</f:facet>
					</rich:dataTable>

até ai beleza, o problema eh o seguinte preciso a cada linha desse dataTable exibir a foto do funcionario, tenho nesse meu objeto que está sendo iterado no dataTable um usuario.getFoto() que me retorna um byte[] que é a foto do kra q está no banco, como raios eu faço para colocar a foto do cara ai?
tudo que tentei até agora ele exibe só a primeira foto, como eu faria para a cada iteração desse cara eu conseguir mandar um parametro pro método com o byte[] do kra ai lá eu daria um outputStream.write…
o problema eh que nao sei como passar esse objeto para ele??

Muito Obrigado Galera

Abs

7 Respostas

T

ele chega a exibir a primeira foto? outra coisa, você carrega essa foto do banco de dados ou você le ela de um diretório ? eu tenho os dois casos aqui na empresa e quando carrego do banco de dados, criamos um componente que lê essa foto e devolve ela por uma servlet. se for de um diretório, basta usa o componente graphiImage.

só por curiosidade… Luan Ibarra… Fasolino?

L

thgdias:
ele chega a exibir a primeira foto? outra coisa, você carrega essa foto do banco de dados ou você le ela de um diretório ? eu tenho os dois casos aqui na empresa e quando carrego do banco de dados, criamos um componente que lê essa foto e devolve ela por uma servlet. se for de um diretório, basta usa o componente graphiImage.

só por curiosidade… Luan Ibarra… Fasolino?

Isso Luan Diego Ibarra Fasolino :smiley: cmo sabe??,
então estou carregando do banco direto, ele exibe a primeira, mas ele só entra no metodo que me faz o out.write na primeira iteração, depois ele n entra de novo no metodo :(…
tem como me mandar um exemplo disso usando servlet plzzz??!

valeu

Focao

O ideal acho que seria ter um DTO nesse lance mas já q num tem faz na unha

OutputStream bout = ((BLOB) blob).getBinaryOutputStream(); // específico driver oracle   
    int bytesRead = 0;   
    while ((bytesRead = bin.read(bbuf)) != -1) {   
        bout.write(bbuf, 0, bytesRead);   
    }
L
Focão:
O ideal acho que seria ter um DTO nesse lance mas já q num tem faz na unha
OutputStream bout = ((BLOB) blob).getBinaryOutputStream(); // específico driver oracle   
    int bytesRead = 0;   
    while ((bytesRead = bin.read(bbuf)) != -1) {   
        bout.write(bbuf, 0, bytesRead);   
    }
ja tentei assim, o problema eh que exibe a primeira imagem para todos da lista, pq a cada iteração do dataTable ele n entra novamente no metodo, só entra uma vez :(
Focao

Mas o While é pra cada interação…

cada foto tem um while pra pegar os bytes…

coloca tudo num DTO e manda ler no jsf

seta no request a lista…

não pode data="${usuarioHandler.urlImage}"

tem que usar c.usuarioHandler.urlImage

o var=“c” q tem a interação

L

Focão:
Mas o While é pra cada interação…

cada foto tem um while pra pegar os bytes…

coloca tudo num DTO e manda ler no jsf

seta no request a lista…

não pode data="${usuarioHandler.urlImage}"

tem que usar c.usuarioHandler.urlImage

o var=“c” q tem a interação


eh que esse usuarioHandler eh meu managedBean tava fazendo assim para testar,
tentei passar o c.url no caso, <OBJECT id=“image” data="${c.url}" width=“100” height=“100”/>
mais assim ele nem entra no getUrl …acho q esse data nao seita passar a variavel da iteração, tem algum outro jetio de chamar isso?

T

não reparei na primeira coluna você chamava o seu managed bean ao invés de chamar a variável, ainda assim, deveria ter imprimido a mesma foto em todas as linhas, não?

você usa qual implementação do jsf?
de qualquer maneira, veja se esse link não te ajuda, isso tem me ajudado em muita coisa:
http://www.rponte.com.br/2008/10/23/estendendo-jsf-el-com-jboss-el/

mas como dito pelo Rafael Ponte, não roda em qualquer implementação!

Criado 12 de novembro de 2008
Ultima resposta 13 de nov. de 2008
Respostas 7
Participantes 3