JSF - Como setar um atributo de um Backing Bean dinamicamente?

Pessoal,

Aqui no trabalho estou tentando migrar uma página JSP, que é responsável por mostrar todos os elementos html, para RICHFACES. Temos um framework próprio onde o programador adiciona um campo texto na página assim:

public class VisaoTeste extends Visao{
  ...
  public void criaPaginaDados(Pagina pagina) {
     pagina.addCampo("Data:", criaTextoDataCalendario("data"));
  }
  ...
}

E a página JSP responsavel por MOSTRAR os campos é a seguinte:

<jsp:useBean id="visao" scope="request" type="Visao" />
<jsp:include page="/jsp/comum/Cabecalho.jsp" />
	<form action="<%= visao.getEnderecoDoServlet() %>" method="post" >

		<%Pagina pagina = visao.getPaginaAtual();%>	
	
		<div class="centro">
			<% Iterator camposDaPagina = pagina.getNomesDosCamposVisiveis(); %>
			<% while ( camposDaPagina.hasNext() ) { %>
				<% String nomeDoCampo = (String) camposDaPagina.next(); %>
                                     <div class="classeRotulo" id="label_<%=nomeDoCampo%>">
                                          <div class="textoRotulo"><%=pagina.getRotuloDoCampo(nomeDoCampo) %></div>
                                    </div>
                                    <div class="classeConteudo" id="campo_<%=nomeDoCampo%>">
                                        <%=pagina.getHtml(nomeDoCampo) %>
                                    </div>
               </div>
</form>
<jsp:include page="/jsp/comum/Rodape.jsp" />

O que não estou conseguindo fazer é com que o BACKINGBEAN receba a Visao como parâmetro, pois é esta que contém todos os campos adicionados pelo programador.

E a NOVA página JSP responsável por gerar os campos é a seguinte:


<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>

<jsp:useBean id="visao" scope="request" type="tjdf.infra.apresentacao.Visao" />

<jsp:include page="/jsp/comum/Cabecalho.jsp" />

 <form action="<%= visao.getEnderecoDoServlet() %>" method="post" >

 	<rich:simpleTogglePanel binding="#{backingBean.campos}" > </rich:simpleTogglePanel>


 </form>

Como setar o atributo Visao através do binding?
Tem outro jeito de fazer isso?


public class BackingBean {

  private Visao visao;
  private HtmlSimpleTogglePanel campos;

  public Visao getVisao() {
    return visao;
  }

  public void setVisao(Visao visao) {
    this.visao = visao;
  }

...

   public HtmlSimpleTogglePanel getCampos() {

        campos = new HtmlSimpleTogglePanel();

	if (getVisao().isCampoData()) {
          HtmlCalendar calendario = new HtmlCalendar();
          calendario.setValue(getVisao().getData());
        }

	campos.getChildren().add(calendario);

	return campos;
   }

...
}

Passa teu email que te mando uma apostila de JSF 1.2 vai ficar fera

Opa! Agora! =)

jose.holanda.neto@gmail.com

Chegou ?

Chegou!

Essa apostila é excelente, já percebi que eu estava indo pelo caminho errado. Na verdade, o que tenho que fazer é usar a Visao como meu BackingBean e não criar um BackingBean e passar minha visao pra ele.

Valeu cara! me ajudou muito essa apostila!

Obrigado.

Flavio…
por favor manda pro meu e-mail tbm essa apostila?

adrianope_silva@hotmail.com

Galera, poderiam me mandar essa apostila tb ?
diegoadricandido23@gmail.com

Abraços

Olá pessoal, eu também estou interessado nessa apostila, pode ser?!

marquesraiol@yahoo.com.br

Agradeço!

Alguém pode mandar essa apostila para mim tbem?

kleberdamasco@hotmail.com

Valeu!

Please, agora também quero essa apostila…

Alguém pode enviá-la para mim?

Email: anderson@peterles.com

Obrigado!