InputText com Ajax +Template no Primefaces Não Funciona (Apenas no Template) [RESOLVIDO]

1 resposta
T

Bom dia Galera,

Estou utilizando NetBeans 6.9.1, GlassFish 3.1, Primefaces 3.4.1, JSF 2.0

Já procurei e revirei o forum e não achei nada que resolvesse o meu problema…

Li sobre forms aninhados, mas não estou usando form no meu template/menu/cabecalho, uso <h:form> apenas no conteudo.

Criei uma página simples, que o usuário informa 1 valor, clica no gravar e grava…

Eu criei as páginas a parte tudo estava funcionando perfeitamente…

Criei um Template… foi onde parou de funcionar…

A Mesma página funciona sem o Template perfeitamente!

O unico item que da erro é o Ajax, dentro do Dialog, no Input Text.

Tenho Ajax em Combos, Checks, utilizo um DataTable tambem, tudo funciona perfeitamente, exceto o InputText…

E se eu removo o Ajax do Input e deixo apenas no Value e removo o Ajax do botão gravar, também não funciona.

Não sei mais o que pode ser, espero que me ajudem!!!

Desde já, obrigado!!!

Segue exemplo do meu código:
TEMPLATE:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <title>Gerenciamento Inventario</title>
    </h:head>
    <h:body>
        <p:ajaxStatus rendered="true" onstart="statusDialog.show()" oncomplete="statusDialog.hide()" onerror="statusDialog.hide()" onsuccess="statusDialog.hide()">
            <p:dialog modal="true" widgetVar="statusDialog" header="Aguarde..."
                      draggable="false" closable="false" resizable="false">
                <h:outputText value="Por favor aguarde..."/>
                <br></br>
                <h:graphicImage value="Imagens/ajax-loader.gif" />
            </p:dialog>
        </p:ajaxStatus>
        <p:growl id="messages" showDetail="true" sticky="true" autoUpdate="true"/>
        <p:layout fullPage="true">

            <p:layoutUnit position="north" size="100" resizable="false"
                          closable="false" collapsible="true">
                <ui:include src="/WEB-INF/Paginas/cabecalho.xhtml"/>
            </p:layoutUnit>

            <p:layoutUnit position="south" size="30" resizable="false"
                          closable="false" collapsible="true">
            </p:layoutUnit>
            <p:layoutUnit position="west" size="200" resizable="false"
                          closable="false" collapsible="true" effect="drop">
                <ui:include src="menu.xhtml"/>
            </p:layoutUnit>

            <p:layoutUnit position="center" >
                <ui:insert name="conteudo"/>
            </p:layoutUnit>

        </p:layout>

    </h:body>
</html>

MENU:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:body>
        <p:menu style="width:180px">
            <p:menuitem value="Alterar" url="VisualizacaoInventario_Template.jsf"/>
        </p:menu>
    </h:body>
</html>

CABECALHO:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <style type="text/css">
            /*demo page css*/

            body{ font: 82.5% "Trebuchet MS", sans-serif; margin: 5px;}
            .demoHeaders { margin-top: 0em; }
            #dialog_link {padding: .4em 1em .4em 20px;text-decoration: none;position: relative;}
            #dialog_link span.ui-icon {margin: 0 5px 0 0;position: absolute;left: .2em;top: 50%;margin-top: 0px;}
            ul#icons {margin: 0; padding: 0;}
            ul#icons li {margin: 2px; position: relative; padding: 4px 0; cursor: pointer; float: left;  list-style: none;}
            ul#icons span.ui-icon {float: left; margin: 0 4px;}

        </style>
    </h:head>
    <h:body>
        <center>
            <p:graphicImage value="Imagens/logo.png" style="width:30%"/>
        </center>
    </h:body>
</html>

Minha JSF Com Problema de Ajax:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    <h:head>

    </h:head>

    <ui:composition template="template.xhtml" >

        <ui:define name="conteudo">
            <h:form id="form">

                <p:tabView id="tabView" dynamic="true" cache="true" >
                    <p:tab id="tba1" title="Visualizacao do Inventario">

<p:commandButton value="Corrigir Registro Manualmente" id="btnSalvarRegistros" update="alteracaoValor" oncomplete="dialogAlteracao.show()" />

<p:dialog id="dialogAlterarValor" header="Alteracao de Valor" widgetVar="dialogAlteracao" appendToBody="true"
                                  showEffect="fade" hideEffect="explode" resizable="false" modal="true" width="250">


                                <p:inputText id="txtNovoValor" value="#{visualizacaoInventario.novoValorContagem}" >
<!-- AQUI ESTA O PROBLEMA... O MESMO AJAX IDENTICO SEM O TEMPLATE FUNCIONA, O GET() FUNCIONA, MAS O SETTER NAO -->
                                    <p:ajax listener="#{visualizacaoInventario.novoValorContagem}" />
                                </p:inputText>
                               
                                <p:separator/>
                                <p:commandButton  value="Gravar" style="width: 100px" actionListener="#{visualizacaoInventario.alterarValorContagem}" oncomplete="dialogAlteracao.hide()" />
                                <p:commandButton style="width: 100px" value="Cancelar" onclick="dialogAlteracao.hide()" type="button" />
                            </center>
                        </p:dialog>
                    </p:tab>


                </p:tabView>
            </h:form>
        </ui:define>
    </ui:composition>
</html>

BEAN:

@ManagedBean
@ViewScoped
public class VisualizacaoInventario { //

 private int novoValorContagem;

    public int getNovoValorContagem() {
        return novoValorContagem;
    }

    public void setNovoValorContagem(int novoValorContagem) {
        this.novoValorContagem = novoValorContagem;
    }

public void alterarValorContagem(ActionEvent acitonEvent) {
 

        PreparedStatement stmt;
        StringBuilder sql = new StringBuilder();
        try {
            int usuario = 0;
            sql.append(" update tb_pocket_contagem set cont_qtde_apur =?");

            stmt = conn.prepareStatement(sql.toString());
          
            stmt.setInt(1, getNovoValorContagem());
            
            stmt.executeUpdate();
            stmt.close();

        } catch (SQLException ex) {

        }
       
    }
}
Erro disparado no Glassfish:

AVISO: PWC4011: Unable to set request character encoding to UTF-8 from context /LyncisWeb_Saraiva_Etico, because request parameters have already been read, or ServletRequest.getReader() has already been called

AVISO: Method not found: [email removido](javax.faces.event.AjaxBehaviorEvent)

javax.el.MethodNotFoundException: Method not found: [email removido](javax.faces.event.AjaxBehaviorEvent)

at com.sun.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:155)

at com.sun.el.parser.AstValue.invoke(AstValue.java:231)

at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)

at org.primefaces.component.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:47)

at javax.faces.event.AjaxBehaviorEvent.processListener(AjaxBehaviorEvent.java:113)

at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:98)

at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:763)

at javax.faces.component.UIData.broadcast(UIData.java:912)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)

at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)

at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)

at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)

at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)

at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)

at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)

at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)

at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)

at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)

at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)

at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)

at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)

at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)

at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)

at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)

at com.sun.grizzly.ContextTask.run(ContextTask.java:69)

at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)

at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)

at java.lang.Thread.run(Thread.java:662)
GRAVE: javax.faces.FacesException: Method not found: [email removido](javax.faces.event.AjaxBehaviorEvent)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:90)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)

at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)

at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)

at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)

at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)

at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)

at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)

at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)

at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)

at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)

at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)

at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)

at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)

at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)

at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)

at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)

at com.sun.grizzly.ContextTask.run(ContextTask.java:69)

at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)

at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)

at java.lang.Thread.run(Thread.java:662)

Caused by: javax.el.MethodNotFoundException: Method not found: [email removido](javax.faces.event.AjaxBehaviorEvent)

at com.sun.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:155)

at com.sun.el.parser.AstValue.invoke(AstValue.java:231)

at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)

at org.primefaces.component.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:47)

at javax.faces.event.AjaxBehaviorEvent.processListener(AjaxBehaviorEvent.java:113)

at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:98)

at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:763)

at javax.faces.component.UIData.broadcast(UIData.java:912)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)

 27 more

Mais uma vez, me ajudem !!! Obrigado!!!

1 Resposta

T

Resolvi galera…

adicionei o <h:form id=“formTemplate”> dentro do meu Template…

Onde eu utilizaca os Dialog, eu coloquei o nome do formTemplate na frente, indicando aquele form.

Com isto ele parou de se perder e não estourou mais erro de form e os dialogs funcionaram normalmente.

Criado 4 de outubro de 2012
Ultima resposta 16 de out. de 2012
Respostas 1
Participantes 1