Fórum JSF Dinamicamente #386565
17/09/2010
0
Fiz todo o processo de criaçao de tela e grids dinamicamente, até ai ok, o meu problema está em fazer as transaçoes, Inserts, Updates, Deletes...
Minha duvida.
Hoje tenho tudo criado no jsf, nada no meu xhtml, ou seja, todos os meus objetos [labels, texts, combos...] onde eu crio eles, formato e so apresento em tela, usando o metodo ManagedBean.
no meu xhtml o unico codigo seria esse:
<h:panelGrid columns="2" binding="#{criaTela.criaCampos}" />
O poblema do qual eu estou enfrentando é como eu vou fazer para pegar os dados digitados no meu objeto, já que em xhtml eu nao tenho nada criado, somente em jsf. Como eu faria para pegar os dados de cada objeto.
ex:
Codigo = 01
Nome = Maria
Estado = SC
conseguir pegar os dados [01,Maria,SC]
se alguem tiver alguma dica, algum exemplo..Nunca fiz isso e to meio perdido.
Grato
Josivan Laskoski
Curtir tópico
+ 0Posts
21/09/2010
Dyego Carmo
MAS... cole aqui um exemplo de seu codigo completo , para que eu possa dar uma analisada :)
Gostei + 0
21/09/2010
Josivan Laskoski
o que eu preciso é saber como eu faço para pegar os dados inseridos
eu tava lendo que o jsf, trabalha com um esquema chamado postback, que é a reconstruçao de a arvore de componentes a cada vez que um managedbean for chamado, ai que está o meu problema.
vou te mostrar os exemplos de criaçao de um inputext e do botao
input:
public UIComponent CriaTexto(Integer maxLength, Integer size,
Boolean readOnly, Boolean required, Boolean styleObrigatorio,
String nome) {
Complementos comple = new Complementos();
FacesContext fctx = FacesContext.getCurrentInstance();
ELContext elctx = fctx.getELContext();
ExpressionFactory exprFactory = ExpressionFactory.newInstance();
ValueExpression expr = exprFactory.createValueExpression(elctx, "#{keyObjetos." + nome + "}", String.class);
//ValueExpression expr = exprFactory.createValueExpression(elctx, "#{keyObjetos.descricao}", String.class);
Application app = fctx.getApplication();
HtmlInputText texto = (HtmlInputText) app.createComponent(HtmlInputText.COMPONENT_TYPE);
texto.setId(nome);
texto.setValueExpression(nome, expr);
System.out.println(texto.getValueExpression(nome).getExpressionString());
texto.setMaxlength(maxLength);
texto.setSize(size);
texto.setReadonly(readOnly);
texto.setRequired(required);
/* caso for obrigatorio terá uma formatacao diferente */
if (styleObrigatorio) {
texto.setStyle(comple.getStyleObrigatorio());
}
//texto.setOnkeydown("if(event.keyCode==13) {event.keyCode=9}");
/*
* caso mesmo sendo obrigatorio mas readonly, ficara com a segunda
* formatacao
*
*/
if (texto.isReadonly()) {
texto.setStyle(comple.getSytleReadOnly());
}
return texto;
}
é criado passando alguns parametros como tamanho, se vai ser requerido, readonly, enfim..os parametros simples e claro valor que vai pra um managedbean.
agora o botao:
public UIComponent CriaBotao(String value) {
FacesContext fctx = FacesContext.getCurrentInstance();
ELContext elctx = fctx.getELContext();
ExpressionFactory exprFactory = ExpressionFactory.newInstance();
Application app = fctx.getApplication();
HtmlCommandButton botao = (HtmlCommandButton) app.createComponent(HtmlCommandButton.COMPONENT_TYPE);
botao.setValue(value);
botao.setId(value.toLowerCase());
botao.setRendered(true);
botao.setActionExpression(exprFactory.createMethodExpression(elctx, "#{keyObjetos.grava}", String.class, new Class[0]));
System.out.println(botao.getActionExpression().getExpressionString());
return botao;
}
e agora o meu KeyObjetos que é o meu managedbean que deveria funcionar e nao está funcionando.
@ManagedBean
@RequestScoped
@SessionScoped
@ApplicationScoped
@ViewScoped
public class KeyObjetos {
private Integer codigo;
private String descricao;
public Integer getCodigo() {
return codigo;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public KeyObjetos() {
Grava();
}
public void Grava() {
System.out.println(getDescricao());
}
esse managedbean deveria receber o codigo e descricao atraves dos objetos criados (input) e quando o botao for clicado chamar o Grava(); pois bem quando clico no botao, é chamado o meu Grava(); mas infelizmente nao tem valor nenhum no get por exemplo da descriçao, ai logo depois que passa pelo meu Grava(); ele chama a classe que (Managedbean) que criou toda minha tela, no caso fazendo o postback, voltando a raiz da arvore de criaçao e ai da pau.
nao sei se consegui me fazer entender, mas enfim...se tiver alguma dica...
Gostei + 0
27/09/2010
Dyego Carmo
FacesContext.getInstance().
Este cara vai te fornecer tudo que esta na arvore... ae eh soh pesquisar !
ValeuZ
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)