Ajuda crud com jsf

8 respostas
A

Ola pessoal, estou tentando fazer o update na linha do datatable, entao peguei esse codigo :

http://www.primefaces.org/showcase/ui/datatableRowEditing.jsf

mas ao criar no bean o metodo onEdit, ele da erro nesse codigo:

FacesMessage msg = new FacesMessage(“Car Edited”, ((Produto) event.getObject()).getModel());

ele fica mandando criar o getModel…
ou alguem sabe outra forma eficiente de editar a linha da tabela?

8 Respostas

drsmachado

Criou os getters e setters dentro do bean Produto?

A

resolvi isso, mas ta dando erro no jsf.

na linha:

<p:ajax event=“rowEdit” listener="#{Produto.onEdit}" update=":form:messages"/>

nao encontra o form, da esse erro

Cannot find component with identifier “:form:messages” referenced from “form:j_idt30:Produtos”.

veja toda minha pagina jsf:

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.org/ui"
	xmlns:f="http://java.sun.com/jsf/core">
<link rel="stylesheet" href="../css/style2.css" />
<ui:decorate template="/templates/padrao.xhtml">
	<ui:define name="centro">
		<div align="left">
			<h:form id="form">
				<p:panel header="Cadastro de produtos">
					<p:accordionPanel dynamic="true" cache="true">
						<p:tab title="Informações">
							<p:panelGrid style="margin-bottom:40px;" styleClass="semBorda">
								<p:row>
									
									<p:column>
										<h:outputLabel for="descriProd" value="Nome do produto:*" />
									</p:column>
									<p:column>
										<p:inputText id="descriProd" value="#{ProdutoController.produtos.nomeProduto}"  />
									</p:column>
								</p:row>
								<p:row>
									<p:column>
										<h:outputLabel for="quantEstoqProd" value="Quantidade:*" />
									</p:column>
									<p:column>
										<p:inputText id="quantEstoqProd" value="#{ProdutoController.produtos.qtdEstoqueProduto}" size="7" />
									</p:column>
									<p:column>
										<h:outputLabel for="unidMedProd	" value="Estoque critico:*" />
									</p:column>
									<p:column>
										<p:inputText id="criticoProd" value="a" />
									</p:column>
								</p:row>
								<p:row>
									<p:column>
										<h:outputLabel for="valorcompraProd" value="Preço de compra:*" />
									</p:column>
									<p:column>
										<p:inputText id="valorcompraProd" value="#{ProdutoController.produtos.valorCompraProduto}" size="15" />
									</p:column>
									<p:column>
										<h:outputLabel for="valorvendaProd" value="Preço de venda:*" />
									</p:column>
									<p:column>
										<p:inputText id="valorvendaProd" value="#{ProdutoController.produtos.valorVendaProduto}" size="15" />
									</p:column>
								
								
								
									</p:row>
								<p:row>
									<p:column>
										<h:outputLabel for="unidade" value="Unidades:*" />
									</p:column>
									<p:column>
										<p:inputText id="unidade" value="a" 	 />
									</p:column>
										<p:column>
											<h:outputText value="Fornecedor: " size ="20" />
										<p:selectOneMenu value="#{Fornecedor}" >
											<f:selectItems value="" var="fornecedor" itemValue="#{g.id}" itemLabel="#{g.sigla}" />
										</p:selectOneMenu>
									</p:column>
									
								</p:row>
							</p:panelGrid>
							
							    <p:dataTable id="Produtos" var="prod" value="#{ProdutoController.listarProdutos}" editable="true" editMode="cell" widgetVar="prodTables">  
							
							  
       <p:ajax event="rowEdit" listener="#{Produto.onEdit}"  update=":form:messages"/>  
        <p:ajax event="rowEditCancel" listener="#{Produto.onCancel}"  update=":form:messages" /> 
         
          
            
    <p:column headerText="Nome" style="width:30%">  
            <p:cellEditor>  
                <f:facet name="output">  
                    <h:outputText value="#{prod.nomeProduto}" />  
                </f:facet>  
                <f:facet name="input">  
                    <p:inputText value="#{prod.nomeProduto}" style="width:100%"/>  
                </f:facet>  
            </p:cellEditor>  
        </p:column>  
  
   <p:column headerText="Quantidade">  
                <h:outputText value="#{prod.qtdEstoqueProduto}" />  
            </p:column>  
            <p:column headerText="Valor de compra">  
                <h:outputText value="#{prod.valorCompraProduto}" />  
            </p:column>  
  
            <p:column headerText="Valor de venda">  
                <h:outputText value="#{prod.valorVendaProduto}" />  
            </p:column>  

         <p:column>
                <f:facet name="header">
                    <h:outputText value="Edição"/>
                </f:facet>
               
                    <h:commandButton action="#{ProdutoController.delete}" value="D"/>
                    <h:commandButton action="#{ProdutoController.update}" value="u"/>
                  
            </p:column>
            
             
             <p:column style="width:6%">  
            <p:rowEditor />  
        </p:column>  
             
        </p:dataTable>  
							
						</p:tab>
					</p:accordionPanel>
					<div id="rodape_prod" align="center">
						<p:commandButton id="btn" value="Cadastrar" update="panel"
							ajax="false" action="#{ProdutoController.insertController}" />
						<p:commandButton id="btn2" value="Editar" update="panel"
							ajax="false" action="#{NavegacaoController.cadProduto}" />
						<p:commandButton id="btn3" value="Apagar" update="panel"
							ajax="false" action="#{NavegacaoController.cadProduto}" />
					</div>
				</p:panel>
			</h:form>
		</div>
	</ui:define>
</ui:decorate>
</html>

pq ta dando erro, que nao encontra o form?

igor_ks

Na verdade ele não encontrou o :form:messages , veja com o firebug ou com o analisador proprio do google chrome / IE para ver o nome completo do ID do seu componente message

A

Como?
ja fiz de tudo aqui, e nada sempre da esse erro!
alguem?

ErickRAR

O seu ajax está tentando atualizar um componente chamado :form:messages na sua página mas não há nada com esse id. Alias, não achei nada no seu código com o id messages. Você terá que cria-lo.

A

ja coloquei
<p:growl id=“messages” showDetail=“true”/>

e nada.

igor_ks

colocou dentro do form?

A

Sim , em todos os lugares

Criado 5 de março de 2014
Ultima resposta 11 de mar. de 2014
Respostas 8
Participantes 4