Excluir com primefaces

5 respostas
C
Boa noite amigos, tenho um cadastro com salvar, altera e excluir. Ele faz essas operações normalmente, o problema é quando eu excluo um registro e depois vou salvar um novo registro acontece esse erro:
javax.el.PropertyNotFoundException: /pages/cadastro/veiculo/carreta/cadastroCarreta.xhtml @124,98 value="#{carretaMBean.selectedCarreta.descricao}": Target Unreachable, 'selectedCarreta' returned null
xhtml:
<p:dialog id="dSalvarCarreta" header="#{msgs.dlgCadasCarreta}"  widgetVar="multiCarDialog"
                      height="435" width="340" showEffect="explode" hideEffect="explode" closable="false">

                <h:panelGrid columns="1" id="pgSalvar" rendered="#{!carretaMBean.dSalvar}">
                    <f:facet name="header">
                        <p:toolbar>
                            <p:toolbarGroup styleClass="toobal">
                                <h:panelGrid columns="4" >
                                    <p:commandButton value="#{msgs.cbtGravar}" action="#{carretaMBean.finishAddCarreta}"
                                                     image="ui-icon-disk" update="msgs, dtCarreta, pgSalvar"
                                                     rendered="#{!carretaMBean.cbtSalvar}"/>

                                    <p:commandButton id="btnAlterar" value="#{msgs.cbtAlterar}" action="#{carretaMBean.AlterarCarreta}"
                                    				 oncomplete="multiCarDialog.hide()" image="ui-icon-arrowrefresh-1-s" 
                                    				 update="msgs, dtCarreta, pgSalvar" rendered="#{!carretaMBean.cbtAlterar}">
                                    </p:commandButton>

                                    <p:commandButton id="cbtLimpar" value="#{msgs.cbtLimpar}" update="pgSalvar"
                                                     action="#{carretaMBean.doLimparCarreta}" rendered="#{!carretaMBean.cbtLimpar}"
                                                     image="ui-icon-document">
                                    </p:commandButton>

                                    <p:commandButton id="cbtCancelar" value="#{msgs.cbtCancel}" oncomplete="multiCarDialog.hide()"
                                                     action="#{carretaMBean.doLimparCarreta}" update="dtCarreta, pgSalvar" image="ui-icon-cancel">
                                        <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.desabilitar}" />
                                    </p:commandButton>
                                </h:panelGrid>
                            </p:toolbarGroup>
                        </p:toolbar>
                    </f:facet>
                    <h:outputLabel id="optDescricao" value="#{msgs.optDescricaoCarreta}" />
					<p:inputText id="itDescricao" value="#{carretaMBean.selectedCarreta.descricao}" size="40" />
					<p:message for="optDescricao"/>
					
					<p:spacer width="7" />
					<h:outputLabel id="optPlaca" value="#{msgs.optPlacaCarreta}" />
					<p:inputMask id="itPlaca" value="#{carretaMBean.selectedCarreta.placa}" mask="aaa-9999" size="40" />
					<p:message for="optPlaca"/>
	                	                
	                <p:spacer width="7" />
                    <h:outputLabel value="#{msgs.optAnoCarreta}"/>
                    <p:inputMask id="iptAnoCarreta" value="#{carretaMBean.selectedCarreta.ano}" mask="9999" size="40" />
                    
                    <p:spacer width="7" />
                    <h:outputLabel value="#{msgs.optCorCarreta}"/>
                    <p:inputText id="iptCorCarreta" value="#{carretaMBean.selectedCarreta.cor}" size="40" />
                    
                    <p:spacer width="7" />
                    <h:outputLabel value="#{msgs.optCarroceriaCarreta}"/>
                    <p:autoComplete id="genero" value="#{carretaMBean.carreta.carroceria}"  
                            		completeMethod="#{carretaMBean.carrocerias}" var="carroceria" itemValue="#{carroceria}"  
                            		itemLabel="#{carroceria.descricao}" dropdown="true" converter="#{carretaMBean.converterCarroceria}"/> 
           		</h:panelGrid>
            </p:dialog>

           <!-- Painel para excluir -->
            <p:confirmDialog id="excluirCarreta" message="#{msgs.optLabelMsgExclusaoCarreta}"
                             width="350"
                             header="#{msgs.optLabelMsgConfirmarCarreta}" severity="alert"
                             widgetVar="confirmation" closable="false">
                <p:commandButton id="cbtSim" value="#{msgs.cbtSim}"
                                 action="#{carretaMBean.doRemoveListaCarretas}"
                                 image="ui-icon-check" update="dtCarreta, msgs"
                                 oncomplete="confirmation.hide()" style="left: 30%;">
                </p:commandButton>
                                 
                <p:commandButton value="#{msgs.cbtNao}" image="ui-icon-cancel" update="dtCarreta" 
                                 onclick="confirmation.hide()" action="#{carretaMBean.CancelarExclusa}"
                                 style="left: 35%;"/>
            </p:confirmDialog>
Método que salva no Bean:
public void finishAddCarreta() {
		Carreta cta = carretaService.getByDescricao(carreta.getDescricao(), carreta.getPlaca());
		if (carreta.getCodigo() == null && cta != null) {
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro:", "Descrição ou Placa já cadastrada"));
		} else if (carreta.getDescricao() != null
				&& carreta.getPlaca() != null
				&& (carreta.getDescricao().isEmpty() || carreta.getPlaca().isEmpty())) {
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro:", "Preencha os campos corretamente"));
		} else {
			carretaService.addCarreta(carreta);
			doLimparCarreta();
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso:", "Registro salvo com sucesso"));
		}
	}
Método que exclui no Bean:
public void doRemoveListaCarretas() {
		if (selectedCarretas.length != 0) {
			
			carretaService.removeListaCarreta(selectedCarretas);

			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso:", "Registro excluido com sucesso"));
		}
	}

Se alguém puder me ajudar, eu agradeço.

5 Respostas

Hebert_Coelho

Crie um método chamado getSelectedCarreta() no seu managed bean.

E um set também.

C
Esse método faz o que ?? Eu tenho assim:
public Carreta getSelectedCarreta() {
		return carreta;
	}

	public void setSelectedCarreta(Carreta selectedCarreta) {
		this.carreta = selectedCarreta;
	}
benignoms

Após excluir dê um new Carreta() no objeto

C

Nao posso dar um new na carreta porque to usando injeção de dependencias

C
Funcionou, depois de excluir de um new, ficou assim:
public void doRemoveListaCarretas() {
		if (selectedCarretas.length != 0) {
			carretaService.removeListaCarreta(selectedCarretas);
			 setSelectedCarreta(new Carreta());

			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso:", "Registro excluido com sucesso"));
		}
	}
Obrigado.
Criado 23 de janeiro de 2012
Ultima resposta 23 de jan. de 2012
Respostas 5
Participantes 3