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;
}
...
}