Fórum Exibir campo longblob no JSF #418416
13/06/2012
0
Como faço pra exibir um campo do tipo longblob (mysql), em uma página JSF???
Usei a tag outputtext e inputtextarea, mas ambas imprimem [B@1e99daa7 que acredito ser a referência do objeto...
Obrigado,
Ricardo Pestana
Curtir tópico
+ 0Posts
13/06/2012
Davi Costa
Se for que tal tranformá-los em arquivos antes de exibir na tela.
att Davi
Gostei + 0
13/06/2012
Ricardo Pestana
Tem idéia de como trabalhar para exibir seu conteúdo em tela?
Gostei + 0
13/06/2012
Davi Costa
att Davi
Gostei + 0
13/06/2012
Ricardo Pestana
call minha_procedures
É isso que vc tá perguntando?
Obrigado pela atenção,
Gostei + 0
13/06/2012
Ricardo Pestana
call minha_procedures
É isso que vc tá perguntando?
Obrigado pela atenção,
Gostei + 0
14/06/2012
Davi Costa
é um array de bytes? é um texto longo?
Dependendo do que vc esteja guardando lá, saberemos qual componente jsf mais indicado
att Davi
Gostei + 0
14/06/2012
Ricardo Pestana
É um texto...
obrigado,
Gostei + 0
14/06/2012
Davi Costa
mostra como tá sua página e seu controller. E vc tb garante que no banco não está da forma que renderiza na página né?
Desconfio que talvez a referencia na página não esteja legal
att Davi
Gostei + 0
18/06/2012
Ricardo Pestana
Bom dia,
Na página está assim:
<h:outputText value=Rotina/Instrução:></h:outputText>
<h:inputTextarea readonly=true rows=5 cols=60 value=#{mBEvent.selectedEvent.body}/>
E na entidade está assim:
@Lob
@Column(name = body_utf8)
private byte[] bodyUtf8;
Gostei + 0
18/06/2012
Davi Costa
<h:inputTextarea readonly=true rows=5 cols=60 value=#{mBEvent.selectedEvent.body}/>
E na entidade está assim:
@Lob
@Column(name = body_utf8)
private byte[] bodyUtf8;
Como é seu getter, desse atributo?
Tenta potsra também os fontes de mBEvent, principalmente esse atributo selectedEvent e seu método getBody
att Davi
Gostei + 0
18/06/2012
Ricardo Pestana
Segue o código...
@ManagedBean
@RequestScoped
public class MBEvent implements Serializable {
private Event selectedEvent;
public MBEvent() {
}
public Event getSelectedEvent() {
return selectedEvent;
}
public void setSelectedEvent(Event selectedEvent) {
this.selectedEvent = selectedEvent;
}
public List<Event> getAllEvent() throws ClassNotFoundException, SQLException {
EntityManagerFactory emf = Persistence.createEntityManagerFactory(Mysql);
EntityManager em = emf.createEntityManager();
Query q = em.createNamedQuery(findAll);
List<Event> events = q.getResultList();
em.close();
emf.close();
return events;
}
}
@Entity
@Table(name = event)
@XmlRootElement
@NamedQueries({
@NamedQuery(name = findAll, query = SELECT e FROM Event e)
})
public class Event implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected EventPK eventPK;
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private byte[] body;
public byte[] getBody() {
return body;
}
public void setBody(byte[] body) {
this.body = body;
}
}
Gostei + 0
18/06/2012
Davi Costa
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private byte[] body;
E ai vc quer salvar um texto ou um array de bytes?
Se for um array de bytes ai trabalhará com arquivo se for texto deve trocar para String
att Davi
Gostei + 0
18/06/2012
Ricardo Pestana
Eu havia entendido sua pergunta, mas acho q fui infeliz na resposta..
É assim, estou montando uma página que exiba o conteúdo da tabela event do mysql. Essa tabela é onde ficam armazenados os jobs que utilizo para algumas manutenções em minha base.
Crio esses jobs com um comando do próprio mysql, e ele armazenha minha instrução nesse campo. A principio e pelo que entendo esse conteúdo sempre será um texto (script sql), e pelo que eu entendo (posso perfeitamente estar errado) estão usando lob prevendo que a instrução pode conter um script grande.
Bom, aí começou meu problema não consigo mostrar o conteúdo desse campo na página... se eu tiver que converter ou ler os bytes do lob para posteriormente convertê-los em texto e exibi-los no textarea eu não sei onde devo encaixar essa lógica.
Entendeu? Se puder me orientar eu agradeço...
Obrigado por enqto e abraços
Gostei + 0
18/06/2012
Davi Costa
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private byte[] body;
para
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private String body;
Desse modo pode conter grande quantidades de caracteres, pode ficar tranquilo
att Davi
Gostei + 0
18/06/2012
Ricardo Pestana
Fiz o que sugeriu e veja o que foi exibido:
63616C6C2070726F635F6D616E5F646173685F636F6E73756C7461
Acho q não vou escapar na conversão né? Tem idéia de como fazer isso?
Obrigado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)