Valores de campos

tenho uma aplicaçao que estou fazendo em jsf, no qual crio todos os meus componentes, objetos e tudo fora do html, ou seja, no html, eu so tenho uma linha que chama
o meu MenagedBean e mais nada.

Mas agora que terminei de fazer toda a montagem dinamica, me surgiu uma duvida gigante, como que faço para pegar os valores desses objetos que vao ser gerados dinamicamente e alimentado na pagina de internet?

exemplo

Código : 01
Nome : João

pegar esse dados
01; João

Grato


               <h:inputText id="codigo" value="#{SeuBean.codigo}" size="30" />
                <h:inputText id="nome" value="#{SeuBean.nome}" size="30" />

para recuperar vc cria um metodo de retorno no seu bean

public List<Pessoa> getPessoa(){
}

usa um data table para ver seus contatos

<h:dataTable value="#{SeuBean.pessoa}" var="item" >

  <h:column>
                            <f:facet name="header">
                                <h:outputText value="Nome"/>
                            </f:facet>
                            <h:outputText value="#{item.nome}"/>

   </h:column>
</h:dataTable>

entao cara deixa eu te mostrar como eu to fazendo

aqui existe uma classe onde cria os objetos, no caso text, combos, labels entre outros, aqui vai o exemplo de como vai criar um text, passo parametros e é criado com algumas opçoes de corres, tamanho e tudo mais.

private HtmlInputText texto;
public UIComponent CriaTexto(Integer maxLength, Integer size,
			Boolean readOnly, Boolean required, Boolean styleObrigatorio,
			String nome) {
		Complementos comple = new Complementos();

		texto = new HtmlInputText();
		texto.setMaxlength(maxLength);
		texto.setSize(size);
		texto.setReadonly(readOnly);
		texto.setRequired(required);
		texto.setId(nome);
		/* caso for obrigatorio terá uma formatacao diferente */
		if (styleObrigatorio) {
			texto.setStyle(comple.getStyleObrigatorio());
		}
		/*
		 * caso mesmo sendo obrigatorio mas readonly, ficara com a segunda
		 * formatacao
		 */
		if (texto.isReadonly()) {
			texto.setStyle(comple.getSytleReadOnly());
		}
		return texto;
	}

após isso eu adicono ele no meu HtmlPanelGrid.

private HtmlPanelGrid criaCampos;
criaCampos = new HtmlPanelGrid();

criaCampos.getChildren().add(
    cria.CriaTexto(Integer.parseInt(splitComentario
	.get(1)), Integer
	.parseInt(splitComentario.get(1)),
	Boolean.parseBoolean(splitComentario
	.get(2)), Boolean
	.parseBoolean(splitComentario
	.get(2)), Boolean
	.parseBoolean(splitComentario
	.get(4)),campo));

no meu add, como tu pode ver, eu passo os parametros exigidos na hora de criar o meu objeto, até ai tranquilo, onde o meu HtmlPanelGrid, vai receber todos os objetos, seja 1 ou 1000… depois no meu xhtml eu faço assim

<h:panelGrid columns="2" binding="#{criaTela.criaCampos}" />

Éssa é a minha unica linha no meu xhtml, onde chama a classe que alimentao o meu HtmlPanelGrid;

o que eu nao sei como fazer é pegar os dados digitados no objeto que vai ser criado no xhtml e poder fazer um Insert ou um Update…algum tipo de transaçao.

Nao sei se consegui me explicar…espero que sim!

Obrigado!

entendi sim, você faz o seguinte você adiciona um link nesse painel para pode clicar nesse link, podendo inserir ou deletar seria ± assim

 HtmlOutputLink link = new HtmlOutputLink();
link.setValue("Pagina.jsf?cadastrar=fulano");

HtmlOutputText exibir = new HtmlOutputText();
 exibir.setValue("Clique aqui para cadastrar");
link.getChildren().add(exibir);

pronto agora você pode clicar em “Clique aqui para cadastrar” e vai ser redirecionado para Pagina.jsf?cadastrar=fulano passando o parametro. Voce também pode fazer isso com um botao e passando atributos

mfp.c parece que vai funcionar, mas eu ainda nao entendi/sei, como que por exemplo no meu menagedbean:

link.setValue("Pagina.jsf?cadastrar=fulano");  

eu vo conseguir pegar o dado que foi colocado por exemplo no meu HtmlInputText. Já que eu vou ter criado o meu HtmlInputText dinamicamente e entao eu nao vou ter ele para poder dizer:

X.getValue(); 

nunca fiz isso, entao estou apanhando um pouco…

Código : 01
Nome : João

pegar esse dados
01; João

Se voce tem um manageBean mapeado ele devera conter os campos codigo e nome.
Na tua pagina xhtml voce configurou os values de cada um de acordo com os campos correspodentes do bean.
Código:<h:inputText value=#{nomeDoManageBean.codigo}
nome :<h:inputText value=#{nomeDoManageBean.nome}

Crie um metodo no manage bean tipo nomeDoManageBean.cadastrar por exemplo caso queira pegar os campos para cadastrar
quando voce clicar no butao cadastrar ele chama esse metodo.
Para acessar os campos use os get correspondente a cada campo.

Certo, acho que entendi, no caso na hora de clicar no botao ter um managedbean que tenha todos os meus objetos, ai trabalhar com o get de cada um deles.

HtmlOutputLink link = new HtmlOutputLink();
link.setValue("#{KeyObjetos.TentaSorte}");
		 
HtmlOutputText exibir = new HtmlOutputText();
exibir.setValue("Clique aqui para cadastrar");
link.getChildren().add(exibir);
@ManagedBean
@SessionScoped
public class KeyObjetos {
	private HtmlInputText texto;
	private HtmlPanelGrid tentaSorte;
	public HtmlPanelGrid getTentaSorte(){
		tentaSorte =  new HtmlPanelGrid();
		System.out.println("asdfafasdfa");
		texto = new HtmlInputText();
		texto.setValue("teste");
		tentaSorte.getChildren().add(texto);
		return tentaSorte;
	}

mas se eu passar no meu value : link.setValue("#{KeyObjetos.TentaSorte}");
nao faz nada, nao executa a minha classe, e se eu passer sem os “#{ }”, ai dá erro.