RichFaces DataModel getRowData() só retorna a primeira linha

4 respostas
Eduardo_Bregaida

Pessoal é o seguinte, estou desenvolvendo um sistema e usando o Rich Faces, porém em um outro projeto funciona normalmente o método: objetoConsulta.getDataModel().getRowData() ele pegava a linha EXATAMENTE de onde eu clicava sem a necessidade de param ou qq outra tag para mandar tais valores.
Mas neste projeto que estou fazendo ele só está pegando a primeira linha não importa qual link eu clique para editar ou excluir segue o código:

EmpresaHandler.java

public String edit(){ try{ Empresa item = (Empresa) objetoConsulta.getDataModel().getRowData(); objetoDet.setCodigo(item.getPk()); objetoDet.setDescricao(item.getDescricao()); }catch (Exception e){ addMessage(e.getMessage(), null, FacesMessage.SEVERITY_ERROR); return WebConstantes.ERRO; } return WebConstantes.OK; }

Empresa.xhtml

<ui:define name="panelDt">
	<h:panelGroup id="pgList">
		<rich:dataTable value="#{EmpresaBean.objetoConsulta.dataModel}" var="item" 
			rendered="#{not empty EmpresaBean.objetoConsulta.itemColl}"	
			id="dataTableItem2" width="100%"
			rowClasses="oddColumn, evenColumn" rows="10"
			border="0" cellspacing="2" cellpadding="3"
			headerClass="headerGrid" footerClass="footerGrid">	
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Descricao" />
				</f:facet>
				<h:outputText value="#{item.descricao}" />
			</rich:column>			
			<rich:column  width="10%" style="text-align:center;">
				<f:facet name="header">
					<h:outputText value="Edit" />
				</f:facet>
				<h:commandButton title="Editar" action="#{EmpresaBean.editar}" immediate="true">
					<f:setPropertyActionListener target="#{EmpresaBean.objetoDetalhe.itemConsulta}" value="#{item}"/>
				</h:commandButton>
			</rich:column>				
		</rich:dataTable>
	</h:panelGroup>
</ui:define>

No GUJ vi que tinha 2 topicos de 2009 mas ninguém postou a solução, enviar <f:param …> seria uma coisa q funfa, mas no outro peojeto está igual e funfa nativo… a versão é a 3.2 mas mesmo com a versão 3.3 ainda dá este erro.

alguém sabe? :?

4 Respostas

Eduardo_Bregaida

Ninguém viu isso?

sergiolopes

Eu tentaria o caminho do f:param mesmo…

Eduardo_Bregaida

O problema estava no dataModel.setWrappedData(this.itemColl);
Como ele estava sempre setando ele criava uma cópia da lista e matava o index da linha daí sempre pegava a primeira posição do array retornando sempre 0.

Obrigado pessoal =)

M

O problema estava no dataModel.setWrappedData(this.itemColl);
Como ele estava sempre setando ele criava uma cópia da lista e matava o index da linha daí sempre pegava a primeira posição do array retornando sempre 0.

Olá, poderia explicar melhor essa solução? Estou com esse mesmo problema, mas não entendi a sua solução.

Valew!

Criado 2 de julho de 2010
Ultima resposta 6 de out. de 2010
Respostas 4
Participantes 3