Nao chama o ManagedBean

17 respostas
C
Olá pessoal, estou com problema para chamar o managedBean da página xhtml: xhtml:
<ui:composition 
 	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui"
	template="/templates/main.xhtml">
	
	<ui:define name="content">
    	<h:form id="frmCadastrarCarreta">
        ......
        <p:commandButton value="#{msgs.cbtGravar}" action="#{carretaMBean.finishAddCarreta}"
                                                     image="ui-icon-disk" update="msgs, dtCarreta, pgSalvar"
                                                     rendered="#{!carretaMBean.cbtSalvar}"/>
        .......
        </h:form>
        </ui:define>
<ui:composition>
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"));
		} else {
			carretaService.addCarreta(carreta);
			doLimparCarreta();
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso:", "Registro salvo com sucesso"));
		}
	}

O problema começou depois que eu coloquei o spring security no projeto, nao sei tem algo a ver. Alguém pode me ajudar?

17 Respostas

Hebert_Coelho

no seu p:commandButton coloca ajax=“false”

mauricioadl

nao esqueceu de colocar a anotacao managedBean. eu sempre esqueço!

C

Nao cara, tudo certinho. Fiz um teste aqui, coloquei um botao na pagina principal logo depois de fazer o login, ficou assim:
principal.xhtml:

<p:commandButton value="Salvar" action="#{carretaMBean.teste}"/>

bean:

public void teste() { System.out.println("Passou por aqui"); }

Mas dai da esse erro e nao chama o bean:

[org.apache.tomcat.util.http.Parameters] (http--127.0.0.1-8080-1) Parameters: Invalid chunk ignored.
LipeJava

Brother…
tenta colocar esssa linha ai no teu codigo:

<ui:param name="managed" value="#{managedBean}" />
C

Amigos, tirei o p:layout e coloquei umas DIVs e funcionou, nao sei o motivo, se alguém souber me diga. Mas muito obrigado. Até +.

esdras_63

Acho que você estava tentando fazer uma chamada ajax certo?? Se sim deveria utilizar actionListener ao invés de action. O action submete a outra página que é retornada como string no método do MB, já o actionListener apenas executa o método do mb e da update nos lugares que você indica. E lembre-se que se for usar action, TEM que colocar ajax=“false” no commandButton se não ele faz chamada com ajax e pesteia tudo heheh.

C

Fiz um teste, coloquei o p:layout devolta no meu main.xhtml e coloquei o actionListener no p:commandButton mas mesmo assim nao chamou o método do beam.

esdras_63

Acho que ele possa estar chamando, mas não dando o update. Tem como postar a página inteira?

C

Sim, vc quer a main.xhtml ou a do cadastro carreta.xhtml?

C
main.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui"
	xmlns:ui="http://java.sun.com/jsf/facelets">

<f:view contentType="text/html" encoding="utf-8">

	<h:head>
		<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
		<title><ui:insert name="title">#{msgs.optTitulo}</ui:insert></title>
		<link rel="stylesheet" href="#{facesContext.externalContext.request.contextPath}/resources/css/estilos.css" type="text/css" />
		<link rel="stylesheet" href="#{facesContext.externalContext.request.contextPath}/resources/css/default.css" type="text/css" />		
		<script type="text/javascript" src="../../../../resources/javaScripts/acoes.js"></script>
        <link rel="icon" href="#{facesContext.externalContext.request.contextPath}/resources/imagens/icone.png" type="image/png" /> 
	</h:head>
	<h:body >
		<p:layout fullPage="true" >

                <p:layoutUnit id="top" position="north">
                    <ui:include src="/templates/includes/menu.xhtml" />
                </p:layoutUnit>

                <p:layoutUnit id="left" position="west" size="300" resizable="true" closable="true" 
                			  collapsible="true" header="#{msgs.ltLeft}" minSize="200">
                    <p:accordionPanel activeIndex="0" autoHeight="false">
                        <p:tab title="Menu 1">
                            <h:outputText value="Theme Preview:" />   
					        <h:outputText value="Stateful Switcher:" />
					        <p:themeSwitcher style="width:200px" effect="fade" var="t">  
					            <f:selectItem itemLabel="Choose Theme" itemValue="" />  
					            <f:selectItems value="#{temasMBean.advancedThemes}" var="theme" itemLabel="#{theme.name}" itemValue="#{theme}"/>  
					  
					            <p:column>  
					                <p:graphicImage value="../resources/imagens/temas/#{t.image}" width="90" height="60"/>  
					            </p:column>  
					  
					            <p:column>  
					               #{t.name}  
					            </p:column>  
					        </p:themeSwitcher>  
                            <br />
                        </p:tab>

                        <p:tab title="Menu 2">
                            <h:outputText value="Menu 2 Content" />
                        </p:tab>

                        <p:tab title="Menu 3">
                            <h:outputText value="Menu 3 Content" />
                        </p:tab>
                    </p:accordionPanel>
                </p:layoutUnit>

                <p:layoutUnit id="center" position="center">
                    <h:form>
						<ui:insert name="content">
						    	Área de Conteúdo
						 </ui:insert>
                    </h:form>
                </p:layoutUnit>
            </p:layout>
	</h:body>
</f:view>
</html>
cadastroCarreta.xhtml
<ui:composition 
 	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui"
	template="/templates/main.xhtml">
	
	<ui:define name="content">
    	<h:form id="frmCadastrarCarreta">
            <p:growl id="msgs" showDetail="true"/>

            <div id="divCarreta" style="height: 530px; width: 100%; overflow: auto; overflow: scroll; overflow: auto;">
                <p:dataTable id="dtCarreta" value="#{carretaMBean.lazyModel}" lazy="true" var="item" paginator="true" rows="5"
                             emptyMessage="#{msgs.dtVazia}" rowsPerPageTemplate="5,10,15" selection="#{carretaMBean.selectedCarretas}"
                              rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}"
                             rowIndexVar="rowIx" rowKey="#{item.codigocarreta}">

                    <f:facet name="header">
                        <p:commandButton id="cbtGravar" value="#{msgs.cbtGravar}" update="frmCadastrarCarreta:pgSalvar"
                                         oncomplete="multiCarDialog.show()" image="ui-icon-disk">
                            <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.cbtAlterar}" />
                            <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.cbtSalvar}" />
                            <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.cbtLimpar}" />
                            <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.dSalvar}" />
                        </p:commandButton>

                        <p:commandButton id="cbtEditar" value="#{msgs.cbtAlterar}"
                                         update="frmCadastrarCarreta:pgSalvar, frmCadastrarCarreta:msgs"
                                         oncomplete="editar(xhr, status, args)"
                                         image="ui-icon-disk"
                                         action="#{carretaMBean.editar}">
                            <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.cbtAlterar}" />
                            <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.cbtSalvar}" />
                            <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.cbtLimpar}" />
                            <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.dSalvar}" />
                        </p:commandButton>

                        <p:commandButton id="btnExcluirCarreta" value="#{msgs.cbtExcluirCarreta}"
                                         image="ui-icon ui-icon-close" oncomplete="excluir(xhr, status, args)"
                                         actionListener="#{carretaMBean.excluir}" update="frmCadastrarCarreta:msgs">
                            <f:setPropertyActionListener value="#{item}" target="#{carretaMBean.selectedCarreta}" />
                            <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.dSalvar}" />
                        </p:commandButton>
                    </f:facet>

                    <p:column selectionMode="multiple" />
                    <p:column id="clnCodCarreta" style="width: 50px" >
                        <f:facet name="header">
                            <h:outputText id="optCodigoCarreta" value="#{msgs.optTableCodigoCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.codigocarreta}"/>
                    </p:column>
                    <p:column id="clnDescricaoCarreta">
                        <f:facet name="header">
                            <h:outputText id="optDescricaoCarreta" value="#{msgs.optTableDescricaoCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.descricao}"/>
                    </p:column>
                    <p:column id="clnPlaca" sortBy="#{item.placa}" filterBy="#{item.placa}">
                        <f:facet name="header">
                            <h:outputText value="#{msgs.optTablePlacaCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.placa}"/>
                    </p:column>
                    <p:column id="clnAno" sortBy="#{item.ano}" filterBy="#{item.ano}">
                        <f:facet name="header">
                            <h:outputText value="#{msgs.optTableAnoCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.ano}"/>
                    </p:column>
                    <p:column id="clnCor" sortBy="#{item.cor}" filterBy="#{item.cor}">
                        <f:facet name="header">
                            <h:outputText value="#{msgs.optTableCorCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.cor}"/>
                    </p:column>
                    <p:column id="clnCarroceira" sortBy="#{item.carroceria.descricao}"
                              filterBy="#{item.carroceria.descricao}">
                        <f:facet name="header">
                            <h:outputText value="#{msgs.optTableCarroceriaCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.carroceria.descricao}"/>
                    </p:column>

             <!--   <f:facet name="footer">
                        <h:outputText value="#{msgs.contaRegistros} #{carretaMBean.carretas.rowCount}"/>
                    </f:facet>  -->
                </p:dataTable>
            </div>

            <!-- Panel para salvar e editar -->
            <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}"
                                 actionListener="#{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>
        </h:form>
    </ui:define>

</ui:composition>
esdras_63

Você não está colocando o actionListener no botão cbtGravar.

C

Tá mas no botao exluir sim, e não chama igual…

esdras_63

Troca seus métodos action por actionListener se quiser chamada ajax.

M

tenta ajax=“false”

C

Já tentei isso, mas dai da uns erros muito loucos…

M

posta os erros q da

C

é uns NullPointerException, mas sem o p:layout nao da erro nenhum…

Criado 19 de janeiro de 2012
Ultima resposta 25 de jan. de 2012
Respostas 17
Participantes 6