Mudar valor coluna primefaces

Java

09/03/2012

Boa noite a todos, venho pedir mais uma ajuda a voces.


Preciso alterar uma coluna de um datatable do primefaces:
Esta coluna esta aparecendo um carácter que representa a região do brasil:
1 = Sul, 2 = Sudeste, 3 = Norte, et...

Gostaria que exibiçe não os números que estão armazenados no banco mais sim a correspondente string.
Criei um metodo que retornava a string de acordo com paramentro, porem nao consigui implementar, nem sei se fiz correto.

O codigo da minha coluna:

    <p:column headerText=Região>
        <h:outputText value=#{estado.regiao12}/>
     </p:column>


Desde já obrigado pela atenção.
Fernando Silva

Fernando Silva

Curtidas 0

Respostas

Davi Costa

Davi Costa

09/03/2012

No seu objeto vc simplesmente cria um atributo com seu getter e setter direitim que vai retornar conforme a coluna que retorna 1, 2.. ou 3.
E chama esse novo atributo na sua view, simples simples.

att Davi
GOSTEI 0
Fernando Silva

Fernando Silva

09/03/2012

No seu objeto vc simplesmente cria um atributo com seu getter e setter direitim que vai retornar conforme a coluna que retorna 1, 2.. ou 3.
E chama esse novo atributo na sua view, simples simples.

att Davi



Testei, funcionou no Datatable, porem quando vou editar o deveria me retornar outro valor, ou seja 1 ou 2 ou 3.....

Não sei se você conhece o recurso labelFunction das datagrids do adobe Flex, se tivesse algo similar no JSF/Primfaces seria o ideal.




GOSTEI 0
Davi Costa

Davi Costa

09/03/2012

Já pensou em usar uma combo ou algo assim, vc colocaria na label a string q vc ker... mas no valor realmente o valor que vai vai precisar... 1,2 ou 3.

att Davi
GOSTEI 0
Fernando Silva

Fernando Silva

09/03/2012

Já pensou em usar uma combo ou algo assim, vc colocaria na label a string q vc ker... mas no valor realmente o valor que vai vai precisar... 1,2 ou 3.

att Davi[/quote

justamente isto que eu uso, no modo de edição uso o combo, na lista o datatable, aí que esta a questão, ao usar o que você me sugeriu no combo não da certo, mas na datatable deu, quando deixo como esta na combo da certo e na datatable não funciona.



GOSTEI 0
Davi Costa

Davi Costa

09/03/2012

posta suapágina aki, talvez fike mais fácil da comunidade te ajudar

att Davi
GOSTEI 0
Fernando Silva

Fernando Silva

09/03/2012

Então abaixo a pagina inteira
A coluna em questão da DataTable é esta
************Aqui eu visualiso somente*****************
<p:column headerText=Região>
    <h:outputText value=#{estado.regiao12}/>
</p:column>

*************Aqui na aba de edição****************************
<p:selectOneMenu id=avaliacao value=#{gerEstado12Session.estado.regiao12}>
   <f:selectItems value=#{utilVariaveisPublicasSession.listRegioes}/>
</p:selectOneMenu>


<?xml version=1.0 encoding=ISO-8859-1 ?> 
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml
      xmlns:h=http://java.sun.com/jsf/html
      xmlns:f=http://java.sun.com/jsf/core
      xmlns:p=http://primefaces.org/ui
      xmlns:ui=http://java.sun.com/jsf/facelets>
    <h:head>
        <meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 />
        <title>#{gerEstado12Session.tituloJanela}</title>
        <link type=text/css href=../css/css.css rel=stylesheet />	
    </h:head>
    <h:body>
        <h:form id=formCadEstado>
            <p:tabView id=tabViewCadEstado widgetVar=wtabPrincipal activeIndex=#{gerEstado12Session.controlTab.indexTab} 
                       dynamic=true style=width: 770px; height: 570px;  >
                <p:tab id=tabListaEstado title=Lista>
                    <h:panelGrid id=panelGridTabela>
                        <p:dataTable id=tabela var=estado value=#{gerEstado12Session.listaDataModel}
                                     selection=#{gerEstado12Session.estadoSelec} selectionMode=single rowKey=#{estado.idcodigo12}
                                     dblClickSelect=true style=position: absolute; width: 99%; left: 4px; top: 6%;>
                           <p:ajax event=rowSelect listener=#{gerEstado12Session.prepararAlterar}
                                   update=:formCadEstado/>
                           <p:column headerText=Codigo style=width: 50px;>
                               <h:outputText value=#{estado.idcodigo12}/>
                            </p:column>
                            <p:column headerText=Nome style=width: 150px;>
                                <h:outputText value=#{estado.nome12}/>
                            </p:column>
                            <p:column headerText=Região>
                                <h:outputText value=#{estado.regiao12}/>
                            </p:column>
                        </p:dataTable>
                    </h:panelGrid>
                    <p:toolbar id=panelGridBotoes style=position: absolute; top: 93%; width: 98%; left: 4px;>
                        <p:toolbarGroup align=left>
                            <p:commandButton actionListener=#{gerEstado12Session.inicia} value=Novo
                                             icon=ui-icon-document update=:formCadEstado
                                             style=left: 1;/>
                            <p:commandButton actionListener=#{gerEstado12Session.paginador.primeiraPagina} 
                                             update=:formCadEstado icon=ui-icon-seek-first title=Primeira página/>
                            <p:commandButton actionListener=#{gerEstado12Session.paginador.voltarPagina} 
                                             update=:formCadEstado
                                             icon=ui-icon-seek-prev title=Página anterior/>
                            <p:inputText widgetVar=inputMaskPagina value=#{gerEstado12Session.paginador.displayPaginador} 
                                         style=width: 80px; title=Digite número da página>
                            </p:inputText>
                            <p:commandButton actionListener=#{gerEstado12Session.paginador.buscarPagina} update=:formCadEstado
                                         icon=ui-icon-check title=Buscar página/>
                            <p:commandButton actionListener=#{gerEstado12Session.paginador.avancarPagina} update=:formCadEstado
                                             icon=ui-icon-seek-next title=Próxima página/>
                            <p:commandButton actionListener=#{gerEstado12Session.paginador.ultimaPagina} update=:formCadEstado
                                             icon=ui-icon-seek-end title=Ultima página/>
                            <p:commandButton id=cPesquisa actionListener=#{gerEstado12Session.iniciaPesquisa} update=:formCadEstado
                                             icon=ui-icon-search title=Pesquisa value=Pesquisar
                                             type=button onclick=dlgPesquisaEstado.show();>
                            </p:commandButton>
                        </p:toolbarGroup>
                    </p:toolbar>                         
                </p:tab>
                <p:tab title=Edição>
                    <p:tabView id=cadastroEstado dynamic=true style=position: absolute; width: 98%; left: 3px; top: 6%;>
                        <p:tab id=tabEdicaoEstado title=Cadastro>
                                <h:panelGrid id=edicaoEstado columns=2>
                                    <h:outputLabel for=Sigla_Estado value=Sigla:*/>
                                    <p:inputMask id=Sigla_Estado value=#{gerEstado12Session.estado.idcodigo12} maxlength=2
                                                 style=text-transform: uppercase; mask=a* placeHolder=  />
                                    <h:outputLabel for=Nome_Estado value=Nome:* />
                                    <p:inputText id=Nome_Estado value=#{gerEstado12Session.estado.nome12}
                                                 maxlength=30/>
                                    <h:outputLabel for=avaliacao value=Região:* />
                                    <p:selectOneMenu id=avaliacao value=#{gerEstado12Session.estado.regiao12}>
                                        <f:selectItems value=#{utilVariaveisPublicasSession.listRegioes}/>
                                    </p:selectOneMenu>
                                </h:panelGrid>
                        </p:tab>
                    </p:tabView>
                    <p:toolbar style=position: absolute; top: 93%; width: 98%; left: 3px;>
                        <p:toolbarGroup align=left>
                            <p:commandButton oncomplete=dlgConfirmaAlteracao.show(); value=Salvar
                                             icon=ui-icon-disk update=:formCadEstado/>
                            <p:commandButton oncomplete=dlgconfirmExclusao.show(); value=Excluir
                                             icon=ui-icon-trash update=:formCadEstado/>
                            <p:commandButton actionListener=#{gerEstado12Session.controlTab.desabilitaEdicao} value=Cancelar 
                                             icon=ui-icon-arrowreturnthick-1-w update=:formCadEstado/>
                        </p:toolbarGroup>
                    </p:toolbar>
                </p:tab>
            </p:tabView>
        </h:form>
        <h:form id=dlgsConfirmacaoCadEstado>
            <p:growl id=growlCadEstado showDetail=true showSummary=true sticky=true life=3000 globalOnly=false/>
            <p:confirmDialog id=confirmAlteracao message=Confirma alteração/inclusão? appendToBody=true 
                             header=#{gerEstado12Session.tituloJanela} severity=alert widgetVar=dlgConfirmaAlteracao>  
                <p:commandButton id=simAlteracao value=Sim oncomplete=dlgConfirmaAlteracao.hide();  
                            actionListener=#{gerEstado12Session.saveUpdate}  update=:formCadEstado growlCadEstado/>  
                <p:commandButton value=Não onclick=dlgConfirmaAlteracao.hide(); type=button update=:formCadEstado />   
            </p:confirmDialog> 
            <p:confirmDialog id=confirmExclusao message=Confirma exlusão? appendToBody=true 
                             header=#{gerEstado12Session.tituloJanela} severity=alert widgetVar=dlgconfirmExclusao>  
                <p:commandButton value=Sim oncomplete=dlgconfirmExclusao.hide();  
                                 actionListener=#{gerEstado12Session.delete}  update=:formCadEstado growlCadEstado/>  
                <p:commandButton value=Não onclick=dlgconfirmExclusao.hide(); type=button update=:formCadEstado />   
            </p:confirmDialog>
        </h:form>
        <p:dialog id=dlgPesquisaEstado header=Pesquisa estado widgetVar=dlgPesquisaEstado  resizable=false width=600
                  height=400 position=center appendToBody=true
                  modal=false>
            <p:ajax event=close update=:formCadEstado:tabViewCadEstado listener=#{gerEstado12Session.recebePesquisa}/>
            <p:button onclick=dlgPesquisaEstado.hide();/>
            <ui:include src=PesquisaEstado.xhtml/>
        </p:dialog>
        <!--
            <iframe src=Pesquisa.jsf width=100% height=100% marginheight=0 marginwidth=0 frameborder=0/>
            <ui:include src=Pesquisa.xhtml/>
        -->
    </h:body>
</html>


GOSTEI 0
Davi Costa

Davi Costa

09/03/2012

Posta sem essa formatação de código, tá ruim de ler.

att Davi
GOSTEI 0
Fernando Silva

Fernando Silva

09/03/2012

<?xml version=1.0 encoding=ISO-8859-1 ?>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml
xmlns:h=http://java.sun.com/jsf/html
xmlns:f=http://java.sun.com/jsf/core
xmlns:p=http://primefaces.org/ui
xmlns:ui=http://java.sun.com/jsf/facelets>
<h:head>
<meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 />
<title>#{gerEstado12Session.tituloJanela}</title>
<link type=text/css href=../css/css.css rel=stylesheet />
</h:head>
<h:body>
<h:form id=formCadEstado>
<p:tabView id=tabViewCadEstado widgetVar=wtabPrincipal activeIndex=#{gerEstado12Session.controlTab.indexTab}
dynamic=true style=width: 770px; height: 550px; >
<p:tab id=tabListaEstado title=Lista>
<h:panelGrid id=panelGridTabela>
<p:dataTable id=tabela var=estado value=#{gerEstado12Session.listaDataModel}
selection=#{gerEstado12Session.estadoSelec} selectionMode=single rowKey=#{estado.idcodigo12}
dblClickSelect=true style=position: absolute; width: 99%; left: 4px; top: 6%;>
<p:ajax event=rowSelect listener=#{gerEstado12Session.prepararAlterar}
update=:formCadEstado/>
<p:column headerText=Codigo style=width: 50px;>
<h:outputText value=#{estado.idcodigo12}/>
</p:column>
<p:column headerText=Nome style=width: 150px;>
<h:outputText value=#{estado.nome12}/>
</p:column>
<p:column headerText=Região>
<h:outputText value=#{estado.regiao12}/>
</p:column>
</p:dataTable>
</h:panelGrid>
<p:toolbar id=panelGridBotoes style=position: absolute; top: 93%; width: 98%; left: 4px;>
<p:toolbarGroup align=left>
<p:commandButton actionListener=#{gerEstado12Session.inicia} value=Novo
icon=ui-icon-document update=:formCadEstado
style=left: 1;/>
<p:commandButton actionListener=#{gerEstado12Session.paginador.primeiraPagina}
update=:formCadEstado icon=ui-icon-seek-first title=Primeira página/>
<p:commandButton actionListener=#{gerEstado12Session.paginador.voltarPagina}
update=:formCadEstado
icon=ui-icon-seek-prev title=Página anterior/>
<p:inputText widgetVar=inputMaskPagina value=#{gerEstado12Session.paginador.displayPaginador}
style=width: 80px; title=Digite número da página>
</p:inputText>
<p:commandButton actionListener=#{gerEstado12Session.paginador.buscarPagina} update=:formCadEstado
icon=ui-icon-check title=Buscar página/>
<p:commandButton actionListener=#{gerEstado12Session.paginador.avancarPagina} update=:formCadEstado
icon=ui-icon-seek-next title=Próxima página/>
<p:commandButton actionListener=#{gerEstado12Session.paginador.ultimaPagina} update=:formCadEstado
icon=ui-icon-seek-end title=Ultima página/>
<p:commandButton id=cPesquisa actionListener=#{gerEstado12Session.iniciaPesquisaEstado} update=:formCadEstado
icon=ui-icon-search title=Pesquisa value=Pesquisar
type=button onclick=dlgPesquisaEstado.show();>
</p:commandButton>
</p:toolbarGroup>
</p:toolbar>
</p:tab>
<p:tab title=Edição>
<p:tabView id=cadastroEstado dynamic=true style=position: absolute; width: 98%; left: 3px; top: 6%;>
<p:tab id=tabEdicaoEstado title=Cadastro>
<h:panelGrid id=edicaoEstado columns=2>
<h:outputLabel for=Sigla_Estado value=Sigla:*/>
<p:inputMask id=Sigla_Estado value=#{gerEstado12Session.estado.idcodigo12} maxlength=2
style=text-transform: uppercase; mask=a* placeHolder= />
<h:outputLabel for=Nome_Estado value=Nome:* />
<p:inputText id=Nome_Estado value=#{gerEstado12Session.estado.nome12}
maxlength=30/>
<h:outputLabel for=avaliacao value=Região:* />
<p:selectOneMenu id=avaliacao value=#{gerEstado12Session.estado.regiao12}>
<f:selectItems value=#{utilVariaveisPublicasSession.listRegioes}/>
</p:selectOneMenu>
</h:panelGrid>
</p:tab>
</p:tabView>
<p:toolbar style=position: absolute; top: 93%; width: 98%; left: 3px;>
<p:toolbarGroup align=left>
<p:commandButton oncomplete=dlgConfirmaAlteracao.show(); value=Salvar
icon=ui-icon-disk update=:formCadEstado/>
<p:commandButton oncomplete=dlgconfirmExclusao.show(); value=Excluir
icon=ui-icon-trash update=:formCadEstado/>
<p:commandButton actionListener=#{gerEstado12Session.controlTab.desabilitaEdicao} value=Cancelar
icon=ui-icon-arrowreturnthick-1-w update=:formCadEstado/>
</p:toolbarGroup>
</p:toolbar>
</p:tab>
</p:tabView>
</h:form>
<h:form id=dlgsConfirmacaoCadEstado>
<p:growl id=growlCadEstado showDetail=true showSummary=true sticky=true life=3000 globalOnly=false/>
<p:confirmDialog id=confirmAlteracao message=Confirma alteração/inclusão? appendToBody=true
header=#{gerEstado12Session.tituloJanela} severity=alert widgetVar=dlgConfirmaAlteracao>
<p:commandButton id=simAlteracao value=Sim oncomplete=dlgConfirmaAlteracao.hide();
actionListener=#{gerEstado12Session.saveUpdate} update=:formCadEstado growlCadEstado/>
<p:commandButton value=Não onclick=dlgConfirmaAlteracao.hide(); type=button update=:formCadEstado />
</p:confirmDialog>
<p:confirmDialog id=confirmExclusao message=Confirma exlusão? appendToBody=true
header=#{gerEstado12Session.tituloJanela} severity=alert widgetVar=dlgconfirmExclusao>
<p:commandButton value=Sim oncomplete=dlgconfirmExclusao.hide();
actionListener=#{gerEstado12Session.delete} update=:formCadEstado growlCadEstado/>
<p:commandButton value=Não onclick=dlgconfirmExclusao.hide(); type=button update=:formCadEstado />
</p:confirmDialog>
</h:form>
<p:dialog id=dlgPesquisaEstado header=Pesquisa estado widgetVar=dlgPesquisaEstado resizable=false width=600
height=400 position=center modal=true>
<p:ajax event=close update=:formCadEstado:tabViewCadEstado listener=#{gerEstado12Session.recebePesquisa}/>
<p:button onclick=dlgPesquisaEstado.hide();/>
<ui:include src=PesquisaEstado.xhtml/>
</p:dialog>
<!--
<iframe src=Pesquisa.jsf width=100% height=100% marginheight=0 marginwidth=0 frameborder=0/>
<ui:include src=Pesquisa.xhtml/>
-->
</h:body>
</html>
GOSTEI 0
Fernando Silva

Fernando Silva

09/03/2012

//************************* Visualização
<p:column headerText=Região>
<h:outputText value=#{estado.regiao12}/>
</p:column>


//************************** Edição ***********************

<p:selectOneMenu id=avaliacao value=#{gerEstado12Session.estado.regiao12}>
<f:selectItems value=#{utilVariaveisPublicasSession.listRegioes}/>
</p:selectOneMenu>

GOSTEI 0
Davi Costa

Davi Costa

09/03/2012

tem alguns atributos que vc pode colocar nessa tag <f:selectItems ,
pesquisa as documentações. Ou sobrescreve o método toString do seu Objeto, para retornar o atributo que vc quiser desse objeto.

att Davi
GOSTEI 0
Fernando Silva

Fernando Silva

09/03/2012

Opa, consegui finalmente utilizando uma solução parecida com a anterior que você passou.
Como eu uso o JPA, então a solução ficou perfeita.

No MB:
//Criei um atributo que verifica outro para retorna a string
@XmlTransient
public String getRegiaoLabel() {
return MetodosPublicos.getInstace().getLabelRegioes(this.regiao12);
}
No xhml:
Exibir
<p:column headerText=Região>
<h:outputText value=#{estado.regiaoLabel}/>
</p:column>

Editar mantive o que estava.
<p:selectOneMenu id=avaliacao value=#{gerEstado12Session.estado.regiao12}>
<f:selectItems value=#{utilVariaveisPublicasSession.listRegioes}/>
</p:selectOneMenu>


Obrigado pela ajuda.







GOSTEI 0
Davi Costa

Davi Costa

09/03/2012

Show de bola, muito bom a iniciativa de postar sua solução.
Assim que possível, favor fechar o chamado.

att Davi
GOSTEI 0
POSTAR