Bom dia Pessoal,
tenho o seguinte código:
teste.xhtml:
[code]
Teste<rich:panel id="teste_panel">
<a4j:outputPanel rendered="#{teste.testeStr == 'teste2' or teste.testeStr == null}">
<h:form>
<a4j:commandButton value="Teste1" action="#{teste.teste1}" render="teste_panel"/>
</h:form>
</a4j:outputPanel>
<a4j:outputPanel rendered="#{teste.testeStr == 'teste1' or teste.testeStr == null}">
<h:form>
<a4j:commandButton value="Teste2" action="#{teste.teste2}" render="teste_panel"/>
</h:form>
</a4j:outputPanel>
<a4j:outputPanel rendered="#{teste.testeStr == null}">
oi
</a4j:outputPanel>
<h:outputText value="#{teste.testeStr}"/>
</rich:panel>
</h:body>
[/code]e TesteManagedBean:
[code]
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean(name = “teste”)
@ViewScoped
public class TesteManagedBean {
private String testeStr;
public String getTesteStr() {
return testeStr;
}
public void setTesteStr(String testeStr) {
this.testeStr = testeStr;
}
@PostConstruct
public void postConstruct(){
System.out.println("Construct");
}
public void teste1(){
testeStr = "teste1";
System.out.println("Teste1");
}
public void teste2(){
testeStr = "teste2";
System.out.println("Teste2");
}
}[/code]
Ao clicar nos botões Teste1 e Teste2 o conteúdo escrito no console deveria ser:
Construct
Teste1
Teste2
mais não é isso que acontece, escreve o seguinte:
Construct
Teste1
Construct
ou seja, ao clicar no botão Teste2 ele chama o construtor novamente.
Alguém sabe como posso estar resolvendo?