JSF: h:dataTable (sempre ele)

Seguinte Pessoal, tenho uma tela de teste usando JSF, conforme imagem em anexo, como é que eu faço para poder salvar os dados inputados pelo usuário?
Obviamente, esses dados vão ter que se transformar numa classe Java, mas como?

Vou colocar o código das minhas entidades, Backing Beans e JSP para entenderem como eu populei os objetos:

[code]public class ManagedBean {
private List<EntidadeFinal> entidades;
private List<SelectItem> manyCheckBox;

/**
 * @return the manyCheckBox
 */
public List&lt;SelectItem&gt; getManyCheckBox() {
	return manyCheckBox;
}

/**
 * @param manyCheckBox the manyCheckBox to set
 */
public void setManyCheckBox(List&lt;SelectItem&gt; manyCheckBox) {
	this.manyCheckBox = manyCheckBox;
}

/**
 * @return the entidades
 */
public List&lt;EntidadeFinal&gt; getEntidades() {
	if(entidades==null)
		loadEntidades();
	
	return entidades;
}

/**
 * @param entidades the entidades to set
 */
public void setEntidades(List&lt;EntidadeFinal&gt; entidades) {
	this.entidades = entidades;
}

private void loadEntidades() {
	this.entidades = new ArrayList&lt;EntidadeFinal&gt;();
	this.manyCheckBox = new ArrayList&lt;SelectItem&gt;();
	
	Map&lt;String, Integer&gt; valores = new HashMap&lt;String, Integer&gt;();
	
	valores.put("Label1 ", 1001);
	valores.put("Label2 ", 1002);
	valores.put("Label3 ", 1003);
	
	Map&lt;String, Integer&gt; valores2 = new HashMap&lt;String, Integer&gt;();
	
	valores2.put("Label X ", 1004);
	valores2.put("Label Y ", 1005);
	valores2.put("Label Z ", 1006);
	
	
	Map&lt;String, Integer&gt; valores3 = new HashMap&lt;String, Integer&gt;();
	
	valores3.put("Label $ ", 1007);
	valores3.put("Label # ", 1008);
	valores3.put("Label % ", 1009);
	
	//---------------------------------------------------------------//
	
	
	//---------------------------------------------------------------//
	EntidadeFinal entidadeFinal1 = new EntidadeFinal();
	EntidadeFinal entidadeFinal2 = new EntidadeFinal();
	EntidadeFinal entidadeFinal3 = new EntidadeFinal();
	
	entidadeFinal1.setIdEntidade(1);
	entidadeFinal2.setIdEntidade(2);
	entidadeFinal3.setIdEntidade(3);
	
	entidadeFinal1.setCombo(valores);
	entidadeFinal2.setCombo(valores2);
	entidadeFinal3.setCombo(valores3);
	
	List&lt;SelectItem&gt; si1 = new ArrayList&lt;SelectItem&gt;();
	si1.add(new SelectItem(entidadeFinal1.getIdEntidade().toString()));
	
	List&lt;SelectItem&gt; si2 = new ArrayList&lt;SelectItem&gt;();
	si2.add(new SelectItem(entidadeFinal2.getIdEntidade().toString()));
	
	List&lt;SelectItem&gt; si3 = new ArrayList&lt;SelectItem&gt;();
	si3.add(new SelectItem(entidadeFinal3.getIdEntidade().toString()));
	
	entidadeFinal1.setManyCheckBox2(si1);
	entidadeFinal2.setManyCheckBox2(si2);
	entidadeFinal3.setManyCheckBox2(si3);

	this.entidades.add(entidadeFinal1);
	this.entidades.add(entidadeFinal2);
	this.entidades.add(entidadeFinal3);
}

}[/code]
Entidade

[code]import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.faces.model.SelectItem;

*/
public final class EntidadeFinal implements Serializable {

private static final long serialVersionUID = 8933157284996517153L;

private Integer idEntidade;
private List&lt;String&gt; inputText1;
private String inputText2;
private List&lt;String&gt; manyCheckBox1;
private List&lt;SelectItem&gt; manyCheckBox2;
private Map&lt;String, Integer&gt; combo;
private String valueCombo;

/**
 * @return the valueCombo
 */
public String getValueCombo() {
	return valueCombo;
}

/**
 * @param valueCombo the valueCombo to set
 */
public void setValueCombo(String valueCombo) {
	this.valueCombo = valueCombo;
}

/**
 * @return the combo
 */
public Map&lt;String, Integer&gt; getCombo() {
	return combo;
}

/**
 * @param combo the combo to set
 */
public void setCombo(Map&lt;String, Integer&gt; combo) {
	this.combo = combo;
}

/**
 * @return the manyCheckBox
 */
public List&lt;String&gt; getManyCheckBox1() {
	return manyCheckBox1;
}

/**
 * @param manyCheckBox the manyCheckBox to set
 */
public void setManyCheckBox1(List&lt;String&gt; manyCheckBox1) {
	this.manyCheckBox1 = manyCheckBox1;
}

/**
 * @return the manyCheckBox2
 */
public List&lt;SelectItem&gt; getManyCheckBox2() {
	return manyCheckBox2;
}

/**
 * @param manyCheckBox2 the manyCheckBox2 to set
 */
public void setManyCheckBox2(List&lt;SelectItem&gt; manyCheckBox2) {
	this.manyCheckBox2 = manyCheckBox2;
}

/**
 * @return the inputText2
 */
public String getInputText2() {
	return inputText2;
}

/**
 * @param inputText2 the inputText2 to set
 */
public void setInputText2(String inputText2) {
	this.inputText2 = inputText2;
}

public EntidadeFinal() {
}

/**
 * @return the idEntidade
 */
public Integer getIdEntidade() {
	return idEntidade;
}

/**
 * @param idEntidade the idEntidade to set
 */
public void setIdEntidade(Integer idEntidade) {
	this.idEntidade = idEntidade;
}

/**
 * @return the inputText1
 */
public List&lt;String&gt; getInputText1() {
	return inputText1;
}

/**
 * @param inputText1 the inputText1 to set
 */
public void setInputText1(List&lt;String&gt; inputText1) {
	this.inputText1 = inputText1;
}

}[/code]
JSP

&lt;f:view&gt; &lt;h:form id="form1"&gt; &lt;t:saveState value="#{managedBean.entidades}" /&gt; &lt;h:dataTable border="1" bgcolor="yellow" cellspacing="4" var="entitys" width="100%" value="#{managedBean.entidades}"&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt; &lt;f:verbatim&gt;Selecione&lt;/f:verbatim&gt; &lt;/f:facet&gt; &lt;h:selectManyCheckbox id="manyCheckBox1" value="#{entitys.manyCheckBox1}"&gt; &lt;f:selectItems value="#{entitys.manyCheckBox2}"/&gt; &lt;/h:selectManyCheckbox&gt; &lt;f:attribute value="center" name="align" /&gt; &lt;/h:column&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt; &lt;f:verbatim&gt;&lt;h:outputText&gt;Código&lt;/h:outputText&gt;&lt;/f:verbatim&gt; &lt;/f:facet&gt; &lt;h:outputText value="#{entitys.idEntidade}" /&gt; &lt;f:attribute value="center" name="align" /&gt; &lt;/h:column&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt; &lt;f:verbatim&gt;&lt;h:outputText&gt;Input Text&lt;/h:outputText&gt;&lt;/f:verbatim&gt; &lt;/f:facet&gt; &lt;h:inputText id="inputText1" value="#{entitys.inputText2}" size="10" maxlength="3" /&gt; &lt;f:attribute value="center" name="align" /&gt; &lt;/h:column&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt; &lt;f:verbatim&gt;Combo&lt;/f:verbatim&gt; &lt;/f:facet&gt; &lt;h:selectOneMenu id="comboBox" value="#{entitys.valueCombo}"&gt; &lt;f:selectItems value="#{entitys.combo}" /&gt; &lt;/h:selectOneMenu&gt; &lt;f:attribute value="center" name="align" /&gt; &lt;/h:column&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt; &lt;f:verbatim&gt;&nbsp;&lt;/f:verbatim&gt; &lt;/f:facet&gt; &lt;h:commandButton value="click()" action="#{managedBean.testarCheck}"&gt; &lt;/h:commandButton&gt; &lt;f:attribute value="center" name="align" /&gt; &lt;/h:column&gt; &lt;/h:dataTable&gt; &lt;h:messages globalOnly="false"&gt;&lt;/h:messages&gt; &lt;/h:form&gt; &lt;/f:view&gt;

Não entendi sua dúvida…

Ok, vou ser mais claro…olhando a tela em anexo, vc vê a necessidade de se persistir os dados inputados pelo usuário (TUDO), ok?

De que forma eu faço isso com o dataTable? Lembre-se que eu preciso descobrir qual combo ta selecionado, se ele digitou algo no campo text, etc…

Entendi. Está faltando uma action que vai percorrer a coleção, pegar objeto a objeto e persisti-lo no banco.

No caso dos combos, o valueCombo já esta guardando o valor.

[quote=gigicantador]Entendi. Está faltando uma action que vai percorrer a coleção, pegar objeto a objeto e persisti-lo no banco.

No caso dos combos, o valueCombo já esta guardando o valor.[/quote]
Ok, mas como vc faria isso? Pq eu já tentei, e nada deu certo…claro que eu já to partindo para apelação, pois o framework não me deixou escolha.
Resumindo, estou pegando os valores dos objetos assim:

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()

A chave é o id do objeto e o valor é que o usuário ‘inputou’…

E eu já te apresento umas deficiências de se trabalhar com h:dataTable:

1 - Se eu colocar required=“true” em qualquer um dos componentes, é necessário que eu escolha algum valor em TODOS os objetos da árvore, quando na prática isso não tem necessidade;

2 - Deixar a cargo do JSF o set dos IDs dos componentes, inviabiliza o meu desenvolvimento Javascript para manipular os objetos de tela;

Vamos lá pessoal, pessoal mais desmobilizado…rs

Uma forcinha para com um camarada de fórum!

Cara, não sei se não entendi o seu problema, mas é que parece ser algo simples, como

no jsp:
&lt;h:commandButton value="click()" action="#{managedBean.salvaEntidades}"&gt; &lt;/h:commandButton&gt;

na classe ManagedBean

[code]private String salvaEntidades() {		
	Iterator itE = entidades.iterator();
	while (itE.hasNext()) {
		Entidades entidade = (Entities) itE.next();
		salvar(entidade);			
	}
	return "SUCESS";
}[/code]

Vc não entendeu…mas blz…