JSP não Reconhece Managed Bean

Eu fiz uma pagina xhtml porem não consigo usar os metodos criados dentro da minha ManagedBean.

Segue o código

<h:body>
		<h:commandButton value="TESTAR" action="cb.testar"/>

</h:body>

— Managed Bean

import javax.faces.annotation.RequestMap;
import javax.faces.bean.ManagedBean;

@ManagedBean(name=“cb”)
@RequestMap
public class Hello {

private String mensagem;


public String testar(){
	System.out.println("entrou no metodo");
	return null;
}

public Hello(){
	this.mensagem="vamos ver ne";
}


public String getMensagem() {
	return mensagem;
}


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

}

Opa,

Vamos lá:

1 - De acordo com as boas praticas nomes de metodos tem que ser minusculo.
2- Todo metodo tem que ter retorno, se não tiver nenhum valor de retorno coloque void

este é o caso do metodo:

public Hello(){
	this.mensagem="vamos ver ne";
}

3 - teste sua classe assim:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class ControladorTeste  {

	private String mensagem="Minha primeira pagina JSF";
	
	public void hello(){
		this.mensagem="vamos ver ne";
	}

	public String getMensagem() {
		return mensagem;
	}

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

E a view assim:

<h:body>

	<h:form>

	
		<h:outputText value="#{controladorTeste.mensagem}" id="label_mensagem" />

			<h:commandButton value="Mudar mensagem"
				action="#{controladorTeste.hello}" />

		
	</h:form>

</h:body>

Se você observar o código mencionado :

public Hello(){
this.mensagem=“vamos ver ne”;
}

É o construtor da classe e não um método convencional.

A intenção do meu código era que na hora que fosse instanciado o objeto ele atribuiria este valor à variável mensagem e a imprimiria na tela porém o mesmo não está acontecendo.

O código abaixo NÃO e construtor da classe.

public Hello(){
this.mensagem="vamos ver ne";
}

pois a sua classe se chama: class ControladorTeste e de acordo com a sintaxe da linguagem o método construtor e:

O construtor da classe é um bloco declarado com o mesmo nome que a classe: 4. Java provê o mecanismo de construtores: Métodos especiais chamados automaticamente pelo Java quando um objeto novo é criado; Construtores são métodos sem valor de retorno e que possuem o mesmo nome da classe.

Logo se sua intensao era colocar o codigo no construtor da classe deveria ter escrevido da seguinte forma:

public controladorTeste(){

this.mensagem="vamos ver ne"
}

De acordo com as boas praticas nome de metodos devem inciar com letras minusculas