Bom dia a todos não consigo pegar o valor de uma varável no managedBean e usar na página jsf.
Meu Bean:
package br.uesb.dovic.controle;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.event.FileUploadEvent;
import br.uesb.dovic.entidades.DocumentoMacro;
import br.uesb.dovic.entidades.Imagem;
import br.uesb.dovic.enums.LadoImagem;
import br.uesb.dovic.enums.TipoImagem;
import br.uesb.dovic.modelo.DAODocumentoMacro;
import br.uesb.dovic.modelo.DAOImagem;
import br.uesb.dovic.servicos.FileService;
import br.uesb.dovic.servicos.ViewService;
import br.uesb.dovic.util.ImagemServlet;
@SuppressWarnings("serial")
@ManagedBean(name = "controleImagem")
@ViewScoped
public class ControleImagem implements Serializable {
private Integer selectedMacroId;
private DocumentoMacro selectedMacro;
private DAOImagem<Imagem> dao;
private DAODocumentoMacro<DocumentoMacro> daoMacro;
private List<Imagem> imagensMacro;
private Imagem objeto;
private Imagem selectedImagem;
private Integer numeroPagina;
private Integer numeroFolha;
private Integer numeroSequencia;
private Integer numeroColeta;
private String codigoImagem;
private List<SelectItem> listaTipoImagem;
private List<SelectItem> listaLadoImagem;
private TipoImagem selectedTipoImagem;
private LadoImagem selectedLadoImagem;
private boolean edicao;
private ViewService viewService;
private String caminhoImagem;
private InputStream arquivoImagem;
private boolean naoSalvar;
public ControleImagem(){
edicao=false;
naoSalvar=true;
dao=new DAOImagem<Imagem>();
daoMacro = new DAODocumentoMacro<DocumentoMacro>();
viewService= new ViewService();
selectedTipoImagem=TipoImagem.FOLHA;
selectedLadoImagem=LadoImagem.FRENTE;
listaTipoImagem=viewService.getSelectItensFromArrayWithoutEmpty(TipoImagem.values(), "toString");
listaLadoImagem=viewService.getSelectItensFromArrayWithoutEmpty(LadoImagem.values(), "toString");
selectedImagem=new Imagem();
}
@PostConstruct
public void init() {
String idMacro = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idMacroSelected");
selectedMacroId= Integer.parseInt(idMacro);
selectedMacro= daoMacro.getEm().find(DocumentoMacro.class, selectedMacroId);
imagensMacro= dao.getByDocumentoMacro(selectedMacroId);
}
public void gravar() {
String arquivoAntigo=new String();
boolean gravou = false;
objeto.setTipoImagem(selectedTipoImagem);
objeto.setLadoImagem(selectedLadoImagem);
objeto.setNumeroFolha(numeroFolha);
objeto.setNumeroPagina(numeroPagina);
objeto.setNumeroSequencia(numeroSequencia);
objeto.setCodigoImagem(codigoImagem);
if (arquivoImagem!=null)
{
arquivoAntigo=objeto.getEnderecoImagem();
objeto.setEnderecoImagem(caminhoImagem);
}
if (objeto.getId() == null)
gravou = dao.persist(objeto);
else
gravou = dao.merge(objeto);
if (gravou) {
imagensMacro.add(objeto);
edicao = false;
if (arquivoImagem!=null)
FileService.copyFile(caminhoImagem, arquivoImagem);
if (arquivoAntigo!=null)
if (!arquivoAntigo.equals(""))
FileService.deleteFile(arquivoAntigo);
}
}
public void uploadArquivoImagem(FileUploadEvent event) {
double time = System.currentTimeMillis();
String extensao = FileService.getExtensao(event.getFile().getFileName());
caminhoImagem = "IMG_" + time + "." + extensao;
try {
arquivoImagem = event.getFile().getInputstream();
naoSalvar=false;
} catch (IOException e) {
e.printStackTrace();
}
}
public String getEnderecoImagem(Imagem img){
if (img==null)
return null;
if (img.getEnderecoImagem()==null)
return null;
return ImagemServlet.getURL(img.getEnderecoImagem());
}
public void novo() {
objeto = new Imagem();
objeto.setDocumentoMacro(selectedMacro);
selectedTipoImagem=TipoImagem.FOLHA;
selectedLadoImagem=LadoImagem.FRENTE;
codigoImagem=selectedMacro.getIdDocumentoFisico()+"-W-Z";
numeroSequencia=null;
numeroPagina=null;
numeroColeta=null;
numeroFolha=null;
caminhoImagem="";
arquivoImagem=null;
naoSalvar=false;
this.edicao = true;
}
public void ajaxCodigoImagem(){
codigoImagem=selectedMacro.getIdDocumentoFisico()+"-C"+numeroColeta+"-"+numeroSequencia;
}
public void cancelar() {
edicao = false;
objeto = null;
}
public void alterar(Imagem obj) {
objeto = obj;
System.out.println("Isso é um Teste)"+objeto.getCodigoImagem());
selectedMacro = objeto.getDocumentoMacro();
selectedTipoImagem=objeto.getTipoImagem();
selectedLadoImagem=objeto.getLadoImagem();
numeroPagina=objeto.getNumeroPagina();
numeroFolha=objeto.getNumeroFolha();
numeroSequencia=objeto.getNumeroSequencia();
codigoImagem=objeto.getCodigoImagem();
caminhoImagem=objeto.getEnderecoImagem();
arquivoImagem=null;
naoSalvar=false;
edicao=true;
}
public void excluir() {
Imagem img = dao.getEm().find(Imagem.class,objeto.getId());
dao.remove(img);
String arquivo=objeto.getEnderecoImagem();
FileService.deleteFile(arquivo);
imagensMacro.remove(img);
edicao = false;
}
public List<Imagem> getImagensCatalogo() {
List<Imagem> lista = dao.getImagensCatalogo(selectedMacro.getId());
return lista;
}
//Este Método atribui todas os cadastro de imagens que possuem uma fotografia a uma lista
public List<Imagem> listaFotografia(){
List<Imagem> imagensTemp = new ArrayList<Imagem>();
Imagem imagemTemp;
for(int i = 0; i < imagensMacro.size(); i++){
imagemTemp=imagensMacro.get(i);
if(imagemTemp.getEnderecoImagem()!="")
imagensTemp.add(imagensMacro.get(i));
}
return imagensTemp;
}
//Este Método atribui todas os cadastros de imagens que não possuem uma fotografia a uma lista
/*public List<Imagem> listaSemFotografia(){
List<Imagem> imagensTemp = new ArrayList<Imagem>();
Imagem imagemTemp;
for(int i = 0; i < imagensMacro.size(); i++){
imagemTemp=imagensMacro.get(i);
if(imagemTemp.getEnderecoImagem()==null)
imagensTemp.add(imagensMacro.get(i));
}
return imagensTemp;
}*/
/*public Imagem CadastroImgSemFotografia(){
Imagem imagemTemp= new Imagem();
for(int i = 0; i < imagensMacro.size(); i++){
imagemTemp=imagensMacro.get(i);
if(imagemTemp.getEnderecoImagem()==null)
break;
}
return imagemTemp;
}*/
//Este Método atribui o cadastro da imagem que não possuem uma fotografia a uma variavel e a passa como
//parâmetro para o método alterar
public void cadastroImgSemFotografia(){
Imagem imagemTemp=null;
for(int i = 0; i < imagensMacro.size(); i++){
imagemTemp=imagensMacro.get(i);
if(imagemTemp.getEnderecoImagem()=="")
break;
}
System.out.println(imagemTemp.getCodigoImagem());
alterar(imagemTemp);
}
public DAOImagem<Imagem> getDaoImagem() {
return dao;
}
public void setDaoImagem(DAOImagem<Imagem> daoImagem) {
this.dao = daoImagem;
}
public Imagem getObjeto() {
return objeto;
}
public void setObjeto(Imagem objeto) {
this.objeto = objeto;
}
public List<SelectItem> getListaTipoImagem() {
return listaTipoImagem;
}
public void setListaTipoImagem(List<SelectItem> listaTipoImagem) {
this.listaTipoImagem = listaTipoImagem;
}
public TipoImagem getSelectedTipoImagem() {
return selectedTipoImagem;
}
public void setSelectedTipoImagem(TipoImagem selectedTipoImagem) {
this.selectedTipoImagem = selectedTipoImagem;
}
public DocumentoMacro getSelectedMacro() {
return selectedMacro;
}
public void setSelectedMacro(DocumentoMacro selectedMacro) {
this.selectedMacro = selectedMacro;
}
public boolean isEdicao() {
return edicao;
}
public void setEdicao(boolean edicao) {
this.edicao = edicao;
}
public boolean isNaoSalvar() {
return naoSalvar;
}
public void setNaoSalvar(boolean naoSalvar) {
this.naoSalvar = naoSalvar;
}
public List<SelectItem> getListaLadoImagem() {
return listaLadoImagem;
}
public void setListaLadoImagem(List<SelectItem> listaLadoImagem) {
this.listaLadoImagem = listaLadoImagem;
}
public LadoImagem getSelectedLadoImagem() {
return selectedLadoImagem;
}
public void setSelectedLadoImagem(LadoImagem selectedLadoImagem) {
this.selectedLadoImagem = selectedLadoImagem;
}
public Integer getNumeroPagina() {
return numeroPagina;
}
public void setNumeroPagina(Integer numeroPagina) {
this.numeroPagina = numeroPagina;
}
public Integer getNumeroFolha() {
return numeroFolha;
}
public void setNumeroFolha(Integer numeroFolha) {
this.numeroFolha = numeroFolha;
}
public Integer getNumeroSequencia() {
return numeroSequencia;
}
public void setNumeroSequencia(Integer numeroSequencia) {
this.numeroSequencia = numeroSequencia;
}
public String getCaminhoImagem() {
return caminhoImagem;
}
public void setCaminhoImagem(String caminhoImagem) {
this.caminhoImagem = caminhoImagem;
}
public InputStream getArquivoImagem() {
return arquivoImagem;
}
public void setArquivoImagem(InputStream arquivoImagem) {
this.arquivoImagem = arquivoImagem;
}
public Integer getNumeroColeta() {
return numeroColeta;
}
public void setNumeroColeta(Integer numeroColeta) {
this.numeroColeta = numeroColeta;
}
public String getCodigoImagem() {
return codigoImagem;
}
public void setCodigoImagem(String codigoImagem) {
this.codigoImagem = codigoImagem;
}
public Integer getSelectedMacroId() {
return selectedMacroId;
}
public void setSelectedMacroId(Integer selectedMacroId) {
this.selectedMacroId = selectedMacroId;
}
public List<Imagem> getImagensMacro() {
return imagensMacro;
}
public void setImagensMacro(List<Imagem> imagensMacro) {
this.imagensMacro = imagensMacro;
}
public Imagem getSelectedImagem() {
return selectedImagem;
}
public void setSelectedImagem(Imagem selectedImagem) {
this.selectedImagem = selectedImagem;
}
}
Este método cadastroImgSemFotografia() é responsável por pegar um objeto de uma lista:
public void cadastroImgSemFotografia(){
Imagem imagemTemp=null;
for(int i = 0; i < imagensMacro.size(); i++){
imagemTemp=imagensMacro.get(i);
if(imagemTemp.getEnderecoImagem()=="")
break;
}
System.out.println(imagemTemp.getCodigoImagem());
alterar(imagemTemp);
}
O objeto é atribuído ao método alterar(imagemTemp) responsável por atribuir seus valores às variáveis.
public void alterar(Imagem obj) {
objeto = obj;
System.out.println("Isso é um Teste)"+objeto.getCodigoImagem());
selectedMacro = objeto.getDocumentoMacro();
selectedTipoImagem=objeto.getTipoImagem();
selectedLadoImagem=objeto.getLadoImagem();
numeroPagina=objeto.getNumeroPagina();
numeroFolha=objeto.getNumeroFolha();
numeroSequencia=objeto.getNumeroSequencia();
codigoImagem=objeto.getCodigoImagem();
caminhoImagem=objeto.getEnderecoImagem();
arquivoImagem=null;
naoSalvar=false;
edicao=true;
}
Essas varáveis devem ser acessadas pela pagina JSF:
<ui:composition template="/resources/templates/baseTemplate.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<ui:define name="body.content.center">
<h:form id="mainForm2" enctype="multipart/form-data">
<p:growl showDetail="true" sticky="true"></p:growl>
<p:panel header="Fotografia" styleClass="panelContent">
<div align="left">
<br />
<h:outputText class="negrito" value="Documento Macro:" />
<h:outputText value="#{controleImagem.selectedMacro.titulo}" />
<br /> <br />
</div>
<h:panelGrid columns="2">
<h:link>
</h:link>
<h:link
outcome="/pages/corpus/inserirDocumentoMacro?faces-redirect=true"
styleClass="linkVoltar" value="Voltar">
</h:link>
</h:panelGrid>
<br />
<!-- -->
<p:outputPanel id="recursos2" layout="block">
<h:panelGrid columns="2" >
<h:panelGroup>
<p:outputLabel style="display: block" value="" />
<p:commandButton value="Ajuste de Parâmetro"/>
</h:panelGroup>
<h:panelGroup>
<p:outputLabel style="display: block" value="" />
<p:commandButton value="Fotografia" onclick="PF('modalImagem2').show()"
style="margin-left:50px;"
actionListener="#{controleImagem.cadastroImgSemFotografia()}"/>
</h:panelGroup>
</h:panelGrid>
</p:outputPanel>
<br />
<p:outputPanel id="containerFotografia2" layout="block">
<p:dataGrid id="grideFotografias2" var="imagem"
value="#{controleImagem.listaFotografia()}" columns="3">
<p:panel id="pnl2" header="#{imagem.codigoImagem}"
style="text-align:center;">
<h:panelGrid columns="1" style="width:100%;">
<p:graphicImage library="images" name="#{imagem.enderecoImagem}"
width="200" height="200"
style="display: block; margin: 0px auto;" />
</h:panelGrid>
</p:panel>
<p:draggable for="pnl2" revert="true" handle=".ui-panel-titlebar"
stack=".ui-panel" />
</p:dataGrid>
</p:outputPanel>
<p:outputPanel id="container-fotografia2" layout="block">
<p:dialog id="modalImagem2" header="Imagens" widgetVar="modalImagem2"
modal="true" height="500" width="600"
style="background-color: white" resizable="false"
visible="#{controleImagem.edicao}">
<p:hotkey bind="esc" handler="modalImagem2.hide()" />
<p:outputPanel id="formDataWrapper2" layout="block">
<h:panelGrid columns="1">
<h:panelGroup>
<p:outputLabel style="display: block" value="Código da imagem:"
for="codigoImagem2" />
<h:outputText id="codigoImagem2" size="10"
style="border:1px solid #4297d7;"
value="#{controleImagem.codigoImagem}" />
</h:panelGroup>
</h:panelGrid>
<h:panelGrid columns="4">
<h:panelGroup>
<p:outputLabel style="display: block" value="Nº da coleta:"
for="nrColeta2" />
<h:outputText id="nrColeta2" size="10" style="border:1px solid #4297d7;"
value="#{controleImagem.numeroColeta}"/>
</h:panelGroup>
<h:panelGroup>
<p:outputLabel style="display: block" value="Nº de sequência:"
for="nrSequencia2" />
<h:outputText id="nrSequencia2" size="10" style="border:1px solid #4297d7;"
value="#{controleImagem.numeroSequencia}"/>
</h:panelGroup>
<h:panelGroup>
<p:outputLabel style="display: block" value="Nº da página:"
for="nrPagina2" />
<h:outputText id="nrPagina2" size="10" style="border:1px solid #4297d7;"
value="#{controleImagem.numeroPagina}" />
</h:panelGroup>
<h:panelGroup>
<p:outputLabel style="display: block" value="Nº da folha:"
for="nrFolha2" />
<h:outputText id="nrFolha2" size="10" style="border:1px solid #4297d7;"
value="#{controleImagem.numeroFolha}" />
</h:panelGroup>
</h:panelGrid>
<br />
<p:layout style="min-width:350px;min-height:255px;">
<p:layoutUnit position="west" resizable="true" size="200"
minSize="40" maxSize="300">
<p:outputLabel value="Tipo de Imagem:" style="display: block" />
<h:selectOneRadio id="listaTipoImagem2" layout="pageDirection"
value="#{controleImagem.selectedTipoImagem}">
<f:selectItems value="#{controleImagem.listaTipoImagem}"
var="tipoImagem" itemLabel="#{tipoImagem.label}"
itemValue="#{tipoImagem}" />
</h:selectOneRadio>
</p:layoutUnit>
<p:layoutUnit position="center">
<p:outputLabel value="Lado da Imagem:" style="display: block" />
<h:selectOneRadio id="listaLadoImagem2" layout="pageDirection"
value="#{controleImagem.selectedLadoImagem}">
<f:selectItems value="#{controleImagem.listaLadoImagem}"
var="ladoImagem" itemLabel="#{ladoImagem.label}"
itemValue="#{ladoImagem}" />
</h:selectOneRadio>
</p:layoutUnit>
</p:layout>
<h:panelGroup id="panelArquivo2">
<p:commandButton value="Tirar Fotografia"
style="margin-left:50px;"
actionListener="#{controleFotografia.fotografar()}" />
</h:panelGroup>
<br />
<br />
<h:panelGrid columns="2" style="position: relative; left: 280px;">
<h:commandButton id="botaoSalvar2" value="Salvar"
style="padding:4px !important;"
styleClass="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left"
onclick="PF('modalImagem2').hide()" icon="ui-icon-disk"
actionListener="#{controleImagem.gravar}"
disabled="#{controleImagem.naoSalvar}" />
<p:commandButton value="Cancelar" icon="ui-icon-cancel"
action="#{controleImagem.cancelar()}"
onclick="PF('modalImagem2').hide()" />
</h:panelGrid>
<br />
</p:outputPanel>
</p:dialog>
</p:outputPanel>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
Mais Especificamente por essa Parte da página:
<p:outputPanel id="formDataWrapper2" layout="block">
<h:panelGrid columns="1">
<h:panelGroup>
<p:outputLabel style="display: block" value="Código da imagem:"
for="codigoImagem2" />
<h:outputText id="codigoImagem2" size="10"
style="border:1px solid #4297d7;"
value="#{controleImagem.codigoImagem}" />
</h:panelGroup>
</h:panelGrid>
<h:panelGrid columns="4">
<h:panelGroup>
<p:outputLabel style="display: block" value="Nº da coleta:"
for="nrColeta2" />
<h:outputText id="nrColeta2" size="10" style="border:1px solid #4297d7;"
value="#{controleImagem.numeroColeta}"/>
</h:panelGroup>
<h:panelGroup>
<p:outputLabel style="display: block" value="Nº de sequência:"
for="nrSequencia2" />
<h:outputText id="nrSequencia2" size="10" style="border:1px solid #4297d7;"
value="#{controleImagem.numeroSequencia}"/>
</h:panelGroup>
<h:panelGroup>
<p:outputLabel style="display: block" value="Nº da página:"
for="nrPagina2" />
<h:outputText id="nrPagina2" size="10" style="border:1px solid #4297d7;"
value="#{controleImagem.numeroPagina}" />
</h:panelGroup>
<h:panelGroup>
<p:outputLabel style="display: block" value="Nº da folha:"
for="nrFolha2" />
<h:outputText id="nrFolha2" size="10" style="border:1px solid #4297d7;"
value="#{controleImagem.numeroFolha}" />
</h:panelGroup>
</h:panelGrid>
Ou seja, os componentes h:outputText são exibidos vazios.
Existe algum conceito no no JSF que eu não estou usando corretamente??
Desde já agradeço quem puder ajudar.