Fala pessoal, estou com uma dificuldade com o JSF e gostaria de uma força.
Vamos lá, o desafio é o seguinte: tenho 1 dataTable D1, dentro de D1, tenho outro dataTable D2, dentro de D2, tenho um h:selectManyCheckBox H1.
[code]<f:view>
<h:form id=“form1”>
<h:dataTable border=“1” width=“100%” value="#{testeBean.eventoWrapper.produtosEvento}" var=“produtos” id=“tbl_prod”>
<h:column>
<f:facet name=“header”>
<f:verbatim>Serviço Código</f:verbatim>
</f:facet>
<h:outputText value="#{produtos.orcamento.servico_codigo}" />
</h:column>
<h:column>
<f:facet name="header">
<f:verbatim>Data Evento Início</f:verbatim>
</f:facet>
<h:outputText value="#{produtos.orcamento.data_evento_fim}" />
</h:column>
<h:column>
<f:facet name="header">
<f:verbatim>Item Produto</f:verbatim>
</f:facet>
<h:dataTable border="1" width="100%" value="#{produtos.itensOrcamento}" var="itens" id="tbl_itens">
<h:column>
<f:facet name="header">
<f:verbatim>Quantidade</f:verbatim>
</f:facet>
<h:outputText value="#{itens.quantidade}" />
</h:column>
<h:column>
<f:facet name="header">
<f:verbatim>Descr</f:verbatim>
</f:facet>
<h:outputText value="#{itens.itemEstoqueVO.descricao}" />
</h:column>
<h:column>
<f:facet name="header">
<f:verbatim>Teste</f:verbatim>
</f:facet>
<h:selectManyCheckbox id="testCheckBox" value="#{testeBean.itemsSelect}">
<f:selectItem id="selItem" itemLabel="(#{itens.quantidade})" itemValue="#{itens.itemEstoqueVO.codigo}" />
</h:selectManyCheckbox>
</h:column>
</h:dataTable>
</h:column>
</h:dataTable>
<h:messages globalOnly="false" layout="list" showDetail="true" />
<br>
<h:commandButton value="Testar" action="#{testeBean.submit}" />
</h:form>
</f:view>
[/code]
No meu Backing Bean, criei uma propriedade do tipo List<String> com o nome itemsSelect (óbvio).
Ao dar um submit, essa propriedade nunca é populada.
Ao analisar o código-fonte do html gerado, percebemos que o id dos componentes fica imenso, ex: form1:tbl_prod:1:tbl_itens:2:testCheckBox (ele concatena o id dos objetos pai utilizando ’ : '). Pelo que eu sei, essa é a forma do JSF fazer o que tem de fazer, certo?
Desconfio que seja esse o problema…alguém sabe???
Outra informação importante, é que a tag <h:messages /> que eu coloquei acima, foi justamente para ver se ele apresentava algum erro de validação. E realmente ele da erro: