Pessoal, preciso comparar alguns valores dentro de um outputtext de um datatable, antes esta fazendo assim:
<p:column>
<f:facet name="header">
<h:outputText value="Tipo" />
</f:facet>
<h:outputText value="#{c.tipo==0?'Tipo 1':'Tipo 2'}" />
</p:column>
Mas agora preciso comprar 5 tipos no mesmo campo, como devo fazer?
Você pode usar jstf com o switch/case e criar o outputText com cada valor.
Ou usar uma expressão de método que talvez retorne o valor correto não sei.
[quote=lele_vader]Você pode usar jstf com o switch/case e criar o outputText com cada valor.
Ou usar uma expressão de método que talvez retorne o valor correto não sei.[/quote]
como ficaria o código eu fosse usar o “case” ?
Olá Luciano, bom dia!
Você está fazendo:
<p:column>
<f:facet name="header">
<h:outputText value="Tipo" />
</f:facet>
<h:outputText value="#{c.tipo==0?'Tipo 1':'Tipo 2'}" />
</p:column>
Neste caso, você pode fazer assim:
<p:column>
<f:facet name="header">
<h:outputText value="Tipo" />
</f:facet>
<h:outputText value="Tipo 1" rendered="#{c.tipo==0}" />
<h:outputText value="Tipo 2" rendered="#{c.tipo==1}" />
<h:outputText value="Tipo 3" rendered="#{c.tipo==2}" />
<h:outputText value="Tipo 4" rendered="#{c.tipo==3}" />
</p:column>
Ou, caso estes valores possam sofrer alterações, você deve fazer isso diretamente no ManagedBean, criando um método que vai retornar o valor
<p:column>
<f:facet name="header">
<h:outputText value="Tipo" />
</f:facet>
<h:outputText value="#{meuBean.texto}" />
</p:column>
public MeuBean ... {
public String getTexto() {
switch (expr) {
case 1:
return "Tipo 1";
break;
case 2:
return "Tipo 2";
break;
// ....
}
return "";
}
}
Ou, ainda, caso sua intenção seja fazer um “de-para”, você pode criar um JSF Converter para este seu domínio (Tipo).Veja como criar um JSF Converter neste link: http://infocomputacao.blogspot.com.br/2009/04/criando-convertconversores-no-jsf.html
<p:column>
<f:facet name="header">
<h:outputText value="Tipo" />
</f:facet>
<h:outputText value="#{c.tipo}" converter="meuConverter" />
</p:column>
Abraço,
Verdade
Dá para fazer usando o renderer e com o tipo.
Mas eu acho melhor fazer uma expressão de método para retornar o valor.
Imagina se tem 100 diferentes ?
Se eu criar um metodo para receber o nome do tipo realmente funciona, mas no momento preciso fazer a alteração apenas na pagina.No caso desse código, ele iria criar varios campos com os valores diferentes ou iria exibir apenas um campo de acordo com a comparação?
<p:column>
<f:facet name="header">
<h:outputText value="Tipo" />
</f:facet>
<h:outputText value="Tipo 1" rendered="#{c.tipo==0}" />
<h:outputText value="Tipo 2" rendered="#{c.tipo==1}" />
<h:outputText value="Tipo 3" rendered="#{c.tipo==2}" />
<h:outputText value="Tipo 4" rendered="#{c.tipo==3}" />
</p:column>
1 curtida
Olá, boa tarde!
Ele só vai renderizar o outputText em que a condição de “rendered” for verdadeira, por exemplo:
<h:outputText value="Tipo 1" rendered="#{c.tipo==0}" />
O output acima só será renderizado (exibido) quando c.tipo for igual a 0.
Abraço,
Brigadão galera, resolvido