Fefo80
Agosto 3, 2021, 12:39am
#1
Prezados, boa noite.
Estou com uma dúvida: tenho uma propriedade declarada no bean, povoada logo adiante, mas quando chamo ela via modal do xhtml, o Tomcat me dá um erro.
No CalculoBean.java ela está simples assim:
String mensagens = "teste";
E o bean chama o modal assim:
RequestContext.getCurrentInstance().execute("PF('dlgMensagens').show();");
E ela é chamada no formulario.xhtml (importado dentro de calculo.xhtml):
<p:dialog id="dlgMensagens" header="Mensagens!" widgetVar="dlgMensagens"
modal="true" height="40%" width="60%" resizable="false"
draggable="false" minimizable="false" maximizable="false">
<h:panelGrid columns="1">
<h:outputText value="#{calculoBean.mensagens}" />
</h:panelGrid>
</p:dialog>
Mas o Tomcat me retorna isso:
GRAVE: Error Rendering View[/pages/calculo/calculo.xhtml]
javax.el.PropertyNotFoundException: /pages/calculo/formulario.xhtml @110,67
value="#{calculoBean.Mensagens}": Property 'mensagens' not found
on type br.com.projeto.web.CalculoBean
Por gentileza, alguma ideia de qual é o erro e como corrigir ele?
Muito obrigado.
Fefo80
Agosto 3, 2021, 2:01am
#2
Resolvido. Trocado:
String mensagens = "teste";
Por:
public String mensagens = "teste";
Fefo80
Agosto 3, 2021, 2:29am
#3
Outra dúvida, ainda com o mesmo trecho de código…
Alterando o bean para:
public String mensagens = "teste 1A";
int contador = 1;
public String getMensagens() {
this.mensagens += " / teste 2A (contador = " + this.contador + ")";
contador++;
return this.mensagens;
}
A resposta que veio é:
'teste 1A / teste 2A (contador = 1) / teste 2A (contador = 2)'
A minha dúvida é: por que passa no getMensagens 2x?
(ele não é citado em mais nenhuma parte do código)
O .xhtml continua do mesmo jeito:
<p:dialog id="dlgMensagens" header="Mensagens!" widgetVar="dlgMensagens"
modal="true" height="40%" width="60%" resizable="false" draggable="false"
minimizable="false" maximizable="false">
<h:panelGrid columns="1">
<h:outputText value="#{calculoBean.mensagens}" />
</h:panelGrid>
</p:dialog>
Desde já, muito obrigado!
Isso faz parte do ciclo de vida do JSF. Ele pode chamar o método get de uma propriedade várias vezes dependendo de como (e quantas vezes) ela estiver sendo referenciada na tela. O recomendado e evitar ter lógica nos métodos get.
1 curtida