[Resolvido] MBean não pega valores da View

3 respostas
bruno_7317
View:
<p:panel rendered="#{bean.etapa1}">
	<p:inputText value="#{bean.mensagem}" />
</p:panel>
<h:commandButton value="PRINTAR" action="#{bean.printarMensagem}" />
MBean:
@Named
@ViewScoped
public class Bean implements Serializable {
	
	public boolean etapa1 = true;

	private String mensagem;

	public void printarMensagem() {
		System.out.println(mensagem);
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}
}

Não importa o que eu escreva no input, o Bean sempre printa null.

3 Respostas

Rodrigo_Sasaki

tente anotar seu Bean com

@ManagedBean

se isso não funcionar, tente usar um <p:commandButton/>

PuRgAuM

Além do @ManagedBean e do <p:commandButton/> sugerido pelo digaoneves, onde vai ser impresso a mensagem??
onde está o <h:outputText…> ou outro equivalente??

O System.out.println serve para imprimir mensagens no console, não nas páginas.

talvez funcione assim:

<p:panel rendered="#{bean.etapa1}"> 
     <p:inputText value="#{bean.mensagem}" /> 
</p:panel> 

<h:commandButton value="PRINTAR" action="vazio, null, nome da página ou qualquer coisa apenas pra dar um refresh na página" />

<h:outputText value="#{bean.mensagem}" />

Espero ter ajudado…

bruno_7317

Usando o @ManagedBean, eu perco todos os objetos injetados (que omiti no código).

De qualquer modo, cometi um falha ao omitir um trecho importante do código (que era inofensivo a meu ver):
O botão usa ajax, sendo assim, o código ficaria:

<p:panel rendered="#{bean.etapa1}">  
        <p:inputText value="#{bean.mensagem}" />  
    </p:panel>  
    <h:commandButton value="PRINTAR" action="#{bean.printarMensagem}">
        <f:ajax render="@form" />
    </h:commandButton>

Um colega de trabalho me apresentou a solução.

<p:panel rendered="#{bean.etapa1}">  
        <p:inputText value="#{bean.mensagem}" />  
    </p:panel>  
    <h:commandButton value="PRINTAR" action="#{bean.printarMensagem}">
        <f:ajax render="@form" execute="@form" />
    </h:commandButton>
Criado 11 de abril de 2012
Ultima resposta 12 de abr. de 2012
Respostas 3
Participantes 3