Erro primefaces

9 respostas
J

Oi pessoal,

estou fazendo um datatable com dataExporter do primefaces, mas o dataExporter não está conseguindo localizar o componente de tabela

O erro é esse:

javax.faces.FacesException: Cannot find component "tablePrincipal" in view.

<h:form prependId="false"> <h:messages id="msg"/> <p:dataTable id="tablePrincipal" var="produto" value="#{produtoMB.listProduto}" paginator="true" rows="7"> //os campos que são exibidos </p:dataTable> </h:form> <h:form prependId="false"> <h:commandLink id="expPdf"> <p:graphicImage value="resources/images/pdf.png" style="border:0px;"/> <p:dataExporter type="pdf" target="tablePrincipal" fileName="produto" /> </h:commandLink> </p:form>

alguem conhece esse erro?

valew

9 Respostas

frankwco

o código do export tem que estar dentro do form da dataTable…

flws

J

mas se eu coloco no mesmo form, meu datatable da erro no campo rowKey dizendo que está null

<p:dataTable id="tablePrincipal" var="produto" value="#{produtoMB.listProduto}" paginator="true" rows="5" selectionMode="single" selection="#{produtoMB.prod}" rowKey="#{produto.codigo}" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" >

Sendo que o codigo do produto vem populado.

erro:

AVISO: Cannot find data with given rowKey:null javax.faces.FacesException: Cannot find data with given rowKey:null at org.primefaces.component.datatable.DataTable.getRowData(DataTable.java:878) at org.primefaces.component.datatable.DataHelper.decodeSingleSelection(DataHelper.java:232) at org.primefaces.component.datatable.DataHelper.decodeSelection(DataHelper.java:223) at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:61) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:790) at javax.faces.component.UIData.processDecodes(UIData.java:980) at org.primefaces.component.datatable.DataTable.processDecodes(DataTable.java:575) at javax.faces.component.UIForm.processDecodes(UIForm.java:216) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1042) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1042)

F

Bom, realmente eles precisam estar no mesmo form. E sobre esse erro aí… certeza que seu produto SEMPRE vai ter o codigo definido?

leonardobhbr

Amigo tente substituir o codigo abaixo

<p:dataExporter type="pdf" target="tablePrincipal" fileName="produto" />

por isso

<p:dataExporter type="pdf" target=":tablePrincipal" fileName="produto" />

Resumindo so coloque o “:” na frente do nome

J

Oi Leonardo, não deu certo. Coloquei o : e deu erro tb

javax.faces.FacesException: Cannot find component ":tablePrincipal" in view.

Fernando, o codigo é campo obrigatório. Sempre vai ter valor até porque ele eh uma chave primaria na tabela.

O erro acontece quando mando editar o cadastro e redireciono para outra tela. Ao listar no dataTable da certo.

C

Faça o que nosso amigo disse acima, mas coloca um ID no h:form e no update faça :id_do_form:tablePrincipal…

Alias, estranho dar erro nos form, já tentou usar apenas <h:form> e colocar TODOS os componentes dentro?

F

Cesar Pizolato:
Faça o que nosso amigo disse acima, mas coloca um ID no h:form e no update faça :id_do_form:tablePrincipal…

Alias, estranho dar erro nos form, já tentou usar apenas <h:form> e colocar TODOS os componentes dentro?

No caso seria sem esse primeiro ‘:’.
Coloca:
id_do_form:tablePrincipal

Ou senão, coloca um atributo no form para ele não colocar seu id no início do id de cada elemento (não lembro o nome da propriedade agora).

C

fernando.camargo:
Cesar Pizolato:
Faça o que nosso amigo disse acima, mas coloca um ID no h:form e no update faça :id_do_form:tablePrincipal…

Alias, estranho dar erro nos form, já tentou usar apenas <h:form> e colocar TODOS os componentes dentro?

No caso seria sem esse primeiro ‘:’.
Coloca:
id_do_form:tablePrincipal

Ou senão, coloca um atributo no form para ele não colocar seu id no início do id de cada elemento (não lembro o nome da propriedade agora).

Sempre usei o : e não tem diferença alguma :S

Vin_ius_Abreu_de_Fra

Estou com o mesmo problema, e está tudo correto, dentro da tag form e tudo, não sei mais o que fazer viu! :x

Criado 14 de setembro de 2011
Ultima resposta 3 de abr. de 2012
Respostas 9
Participantes 6