JSF 1.1 -> Problema com h:dataTable + h:selectManyCheckBox [É um bug?]

14 respostas
felipeguerra

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

		&lt;h:commandButton value="Testar" action="#{testeBean.submit}" /&gt;
	&lt;/h:form&gt;
&lt;/f:view&gt;
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:

Validation Error: Value is not valid

14 Respostas

felipeguerra

Ninguém?

felipeguerra

Isso nunca aconteceu com ninguém? [Estou levantando a hipótese de ser um bug, pois não conheço ninguém que tem um caso de sucesso com esse cenário…é aí que entra a participação da comunidade!]

Abraço

felipeguerra

Bem, como ainda não obtive resposta, estou acrescentando uma descrição mais pormenorizada do erro, inclusive com as classes de teste envolvidas.


rponte

Humm… Qual o escopo do teu managed bean?

felipeguerra

Já trabalhei com escopo igual a request e session…já usei o saveState do Tomahawk também, pq?

Valeu

felipeguerra

Sugere mais alguma coisa?

felipeguerra

Nada?

marcosharbs

vc tem um biding entre essa tabela e um componente no seu controller??

felipeguerra

Não! Pq?

Abraço!

felipeguerra

Esse tópico poderia ser apagado já que ninguém sabe do que se trata…

fabio.massa

Fala felipeguerra, cara ja utilize o selectManyCheckbox e não tive nenhum problema, só que foi dentro de um dataTable apenas…você ja testou dentro de um só ao invés do 3 dataTable?
Só notei uma coisa estranha, você utiliza o selectManyCheckbox mas joga apenas um valor dentro, pois você utiliza o selectItem, porque não tenta com o selectBooleanCheckbox?, talvez seja uma opção.
Desculpe se falei alguma besteira.

Boa sorte aí. Abraços,

felipeguerra

Mas quem itera é o dataTable…compreende?

Eu apenas forneço a propriedade e ele se vira para popular…

felipeguerra

Alguém sabe como o JSF faz para pegar os valores dos objetos dentro de um dataTable?

Por exemplo, eu tenho um dataTable com um <h:inputText /> para o usuário entrar com dados, ou seja, a cada linha um objeto será renderizado…

Alguém faz isso?

Estou começando a fica irritado com o JSF por conta disso!

Abraço

luizfonseca830

Acredito que seja uma limitação mesmo do proprio jsf 1.1 amigo

Criado 18 de setembro de 2008
Ultima resposta 16 de jun. de 2015
Respostas 14
Participantes 5