2013-10-04 58 views
0

所以,我有一個Primefaces的問題,我想要一個按鈕來重置面板,但該按鈕不起作用,下面是代碼。命令按鈕無法在primefaces和ui上工作:define

<?xml version="1.0" encoding="utf-8" ?> 
<ui:composition template="templatePortal.xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:a="http://www.ambientinformatica.com.br/jsf2" xmlns:p="http://primefaces.org/ui"> 

<ui:define name="head"> 
    <style> 
.col1 { 
width: 10%; 
} 

.col2 { 
width: 90%; 
} 
</style> 
</ui:define> 
<ui:define name="corpo"> 
    <a:field label="Ficha: "> 
     <p:inputText id="ficha" label="ficha"> 

     </p:inputText> 
    </a:field> 

    <a:field label="Dotação: "> 
     <p:inputMask id="dotacao" mask="99.99.9999.999.999.999" /> 
    </a:field> 
    <a:field> 


    </a:field> 
    <a:newLine /> 

    <p:panel id="panel" header="Orçamento"> 
     <a:field label="Exercício"> 
      <p:inputText id="exercicio"></p:inputText> 
     </a:field> 

     <a:newLine /> 

     <a:field label="Unidade:"> 
      <p:inputText id="unidade" value="#{ElaboracaoOrcamentariaControl.unidade.codigo}" label="unidade"> 
       <p:ajax event="blur" listener="#{ElaboracaoOrcamentariaControl.validar}" update=":formCorpo:panel" /> 
      </p:inputText> 
     </a:field> 
     <a:field> 
      <p:inputText id="nomeUnidade" value="#{ElaboracaoOrcamentariaControl.unidade.descricao}" style="width:550px;"></p:inputText> 
     </a:field> 
     <a:newLine /> 

     <a:field label="Orgão:"> 
      <p:inputText id="orgao" value="#{ElaboracaoOrcamentariaControl.orgao.codigo}"> 
       <p:ajax event="blur" listener="#{ElaboracaoOrcamentariaControl.validar}" update=":formCorpo:panel" /> 
      </p:inputText> 
     </a:field> 
     <a:field> 
      <p:inputText id="nomeOrgao" value="#{ElaboracaoOrcamentariaControl.orgao.descricao}" style="width:550px;"></p:inputText> 
     </a:field> 
     <a:newLine /> 

     <a:field label="Função:"> 
      <p:inputText id="funcao" value="#{ElaboracaoOrcamentariaControl.funcao.id}" label="funcao"> 
       <p:ajax event="blur" listener="#{ElaboracaoOrcamentariaControl.validar}" update=":formCorpo:panel" /> 
      </p:inputText> 
     </a:field> 
     <a:field> 
      <p:inputText id="nomeFuncao" value="#{ElaboracaoOrcamentariaControl.funcao.descricao}" style="width:550px;"></p:inputText> 
     </a:field> 
     <a:newLine /> 

     <a:field label="SubFunção:"> 
      <p:inputText id="subfuncao" value="#{ElaboracaoOrcamentariaControl.subFuncao.id}" label="subfuncao"> 
       <p:ajax event="blur" listener="#{ElaboracaoOrcamentariaControl.validar}" update=":formCorpo:panel" /> 
      </p:inputText> 
     </a:field> 
     <a:field> 
      <p:inputText id="nomeSubfuncao" value="#{ElaboracaoOrcamentariaControl.subFuncao.descricao}" style="width:550px;"></p:inputText> 
     </a:field> 
     <a:newLine /> 

     <a:field label="Programa:"> 
      <p:inputText id="programa" value="#{ElaboracaoOrcamentariaControl.programa.codigo}" label="programa"> 
       <p:ajax event="blur" listener="#{ElaboracaoOrcamentariaControl.validar}" update=":formCorpo:panel" /> 
      </p:inputText> 
     </a:field> 
     <a:field> 
      <p:inputText id="nomePrograma" value="#{ElaboracaoOrcamentariaControl.programa.descricao}" style="width:550px;"></p:inputText> 
     </a:field> 

     <a:newLine /> 

     <a:field label="Ação:"> 
      <p:inputText id="acao" value="#{ElaboracaoOrcamentariaControl.acao.nroProjAtiv}" label="acao"> 
       <p:ajax event="blur" listener="#{ElaboracaoOrcamentariaControl.validar}" update=":formCorpo:panel" /> 
      </p:inputText> 
     </a:field> 
     <a:field> 
      <p:inputText id="nomeAcao" value="#{ElaboracaoOrcamentariaControl.acao.descricaoReduzida}" style="width:550px;"></p:inputText> 
     </a:field> 
     <a:newLine /> 

     <a:field label="elemento Despesa:"> 
      <p:inputText id="elementoDespesa" value="#{ElaboracaoOrcamentariaControl.elementoDespesa.codigo}" label="elementoDespesa"> 
       <p:ajax event="blur" listener="#{ElaboracaoOrcamentariaControl.validar}" update=":formCorpo:panel" /> 
      </p:inputText> 
     </a:field> 
     <a:field> 
      <p:inputText id="nomeElementoDespesa" value="#{ElaboracaoOrcamentariaControl.elementoDespesa.descricao}" style="width:550px;"></p:inputText> 
     </a:field> 

     <a:newLine /> 
     <a:newLine /> 
     <a:newLine /> 
     <p:commandButton process="@this" immediate="true"> 
      <p:resetInput target=":formCorpo"/> 

     </p:commandButton> 

     <p:dataTable id="dataTable" var="fonte" value="#{ElaboracaoOrcamentariaControl.dotacao.fontes}"> 

      <p:column headerText="Fonte"> 
       <h:outputText value="#{fonte.fonte.codigo}" /> 
      </p:column> 
      <p:column headerText="Descrição da fonte de recurso"> 
       <h:outputText value="#{fonte.fonte.descricao}" /> 
      </p:column> 
      <p:column headerText="Valor"> 
       <h:outputText value="#{fonte.valor}" /> 
      </p:column> 
      <p:column headerText="Excluir"> 
       <p:commandButton id="selectButton" update=":form:display" immediate="true" icon="ui-icon-search" title="View" process="@this"> 

       </p:commandButton> 
      </p:column> 
     </p:dataTable> 
    </p:panel> 


</ui:define> 

和背豆:

package br.com.webgoverno.contabilidade.controle; 

import java.util.ArrayList; 
import java.util.List; 

import javax.annotation.PostConstruct; 
import javax.faces.event.ActionEvent; 
import javax.faces.event.AjaxBehaviorEvent; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Scope; 
import org.springframework.stereotype.Controller; 

import br.com.ambientinformatica.ambientjsf.util.UtilFaces; 
import br.com.ambientinformatica.jpa.exception.PersistenciaException; 
import br.com.webgoverno.contabilidade.persistencia.AcaoDao; 
import br.com.webgoverno.contabilidade.persistencia.DotacaoDao; 
import br.com.webgoverno.contabilidade.persistencia.ElementoDespesaDao; 
import br.com.webgoverno.contabilidade.persistencia.FuncaoDao; 
import br.com.webgoverno.contabilidade.persistencia.SubFuncaoDao; 
import br.com.webgoverno.orcamento.entidade.Acao; 
import br.com.webgoverno.orcamento.entidade.Dotacao; 
import br.com.webgoverno.orcamento.entidade.ElementoDespesa; 
import br.com.webgoverno.orcamento.entidade.FonteDotacao; 
import br.com.webgoverno.orcamento.entidade.Funcao; 
import br.com.webgoverno.orcamento.entidade.OrcamentoException; 
import br.com.webgoverno.orcamento.entidade.Orgao; 
import br.com.webgoverno.orcamento.entidade.Programa; 
import br.com.webgoverno.orcamento.entidade.SubFuncao; 
import br.com.webgoverno.orcamento.entidade.UnidadeOrcamentaria; 
import br.com.webgoverno.orcamento.persistencia.OrgaoDao; 
import br.com.webgoverno.orcamento.persistencia.ProgramaDao; 

@Controller("ElaboracaoOrcamentariaControl") 
@Scope("conversation") 
public class ElaboracaoOrcamentariaControl extends ControleContabilidade { 

    private Dotacao    dotacao   = new Dotacao(); 

    // campos da tela 

    private UnidadeOrcamentaria unidade; 

    private Orgao    orgao; 

    private Funcao    funcao; 

    private SubFuncao   subFuncao; 

    private Programa   programa; 

    private Acao    acao; 

    private ElementoDespesa  elementoDespesa; 

    // fim campos da tela 

    List<FonteDotacao>   fonteDotacoes = new ArrayList<FonteDotacao>(); 

    private List<Dotacao>  dotacoes  = new ArrayList<Dotacao>(); 

    @Autowired 
    private DotacaoDao   dotacaoDao; 

    @Autowired 
    private OrgaoDao   orgaoDao; 

    @Autowired 
    private FuncaoDao   funcaoDao; 

    @Autowired 
    private SubFuncaoDao  subFuncaoDao; 

    @Autowired 
    private ProgramaDao   programaDao; 

    @Autowired 
    private AcaoDao    acaoDao; 

    @Autowired 
    private ElementoDespesaDao elementoDespesaDao; 

    @PostConstruct 
    public void inicializar() { 

     unidade = new UnidadeOrcamentaria(); 

     orgao = new Orgao(); 

     funcao = new Funcao(); 

     subFuncao = new SubFuncao(); 

     programa = new Programa(); 

     acao = new Acao(); 

     elementoDespesa = new ElementoDespesa(); 

    } 

    public Dotacao getDotacao() { 

     return dotacao; 
    } 

    public void setDotacao(Dotacao dotacao) { 

     this.dotacao = dotacao; 
    } 

    public UnidadeOrcamentaria getUnidade() { 

     return unidade; 
    } 

    public void setUnidade(UnidadeOrcamentaria unidade) { 

     this.unidade = unidade; 
    } 

    public Orgao getOrgao() { 

     return orgao; 
    } 

    public void setOrgao(Orgao orgao) { 

     this.orgao = orgao; 
    } 

    public Funcao getFuncao() { 

     return funcao; 
    } 

    public void setFuncao(Funcao funcao) { 

     this.funcao = funcao; 
    } 

    public SubFuncao getSubFuncao() { 

     return subFuncao; 
    } 

    public void setSubFuncao(SubFuncao subFuncao) { 

     this.subFuncao = subFuncao; 
    } 

    public Programa getPrograma() { 

     return programa; 
    } 

    public void setPrograma(Programa programa) { 

     this.programa = programa; 
    } 

    public Acao getAcao() { 

     return acao; 
    } 

    public void setAcao(Acao acao) { 

     this.acao = acao; 
    } 

    public ElementoDespesa getElementoDespesa() { 

     return elementoDespesa; 
    } 

    public void setElementoDespesa(ElementoDespesa elementoDespesa) { 

     this.elementoDespesa = elementoDespesa; 
    } 

    public List<Dotacao> getDotacoes() { 

     return dotacoes; 
    } 

    public void setDotacoes(List<Dotacao> dotacoes) { 

     this.dotacoes = dotacoes; 
    } 

    public DotacaoDao getDotacaoDao() { 

     return dotacaoDao; 
    } 

    public void setDotacaoDao(DotacaoDao dotacaoDao) { 

     this.dotacaoDao = dotacaoDao; 
    } 

    public void confirmar(ActionEvent evt) { 

     unidade.setOrgao(orgao); 
     programa.getAcoes().add(acao); 

     dotacao.setUnidade(unidade); 
     dotacao.setPrograma(programa); 
     try { 
      dotacaoDao.alterar(dotacao); 
      UtilFaces.addMensagemFaces("Salvo com sucesso"); 

     } catch (Exception e) { 
      UtilFaces.addMensagemFaces(e); 
     } 

    } 

    public List<Dotacao> listarDotacoes() { 

     try { 
      this.dotacoes = dotacaoDao.listar(); 
     } catch (PersistenciaException e) { 
      UtilFaces.addMensagemFaces(e); 
     } 
     return dotacoes; 
    } 

    public void pesquisaDotacao() { 

     try { 
      this.dotacao = dotacaoDao.consultar(this.dotacao); 
     } catch (PersistenciaException e) { 
      UtilFaces.addMensagemFaces(e); 
     } 
    } 

    public void validar(AjaxBehaviorEvent event) { 

     try { 
      /* 
      * if (unidade.getCodigo() != null && 
      * unidade.consultarPorCodigo(unidade).size() > 0) { orgao = 
      * orgaoDao.consultarPorCodigo(orgao).get(0); } 
      */ 
      if (orgao.getCodigo() != null && orgaoDao.consultarPorCodigo(orgao).size() > 0) { 
       orgao = orgaoDao.consultarPorCodigo(orgao).get(0); 
      } else orgao = new Orgao(); 

      if (funcao != null && (funcao.getId() != null) && (funcaoDao.consultar(funcao.getId()) != null)) { 
       funcao = funcaoDao.consultar(funcao.getId()); 
      } else funcao = new Funcao(); 

      if (subFuncao != null && (subFuncao.getId() != null) && (subFuncaoDao.consultar(subFuncao.getId()) != null)) { 
       subFuncao = subFuncaoDao.consultar(subFuncao.getId()); 
      } else subFuncao = new SubFuncao(); 

      if (programa.getCodigo() != null && programaDao.consultarPorCodigo(programa).size() > 0) { 
       programa = programaDao.consultarPorCodigo(programa).get(0); 
      } else programa = new Programa(); 

      if (acao.getNroProjAtiv() != null && acaoDao.consultarPorCodigo(acao).size() > 0) { 
       acao = acaoDao.consultarPorCodigo(acao).get(0); 
      } else acao = new Acao(); 

      if (elementoDespesa.getCodigo() != null && elementoDespesaDao.consultarPorCodigo(elementoDespesa).size() > 0) { 
       elementoDespesa = elementoDespesaDao.consultarPorCodigo(elementoDespesa).get(0); 
      } else elementoDespesa = new ElementoDespesa(); 

     } catch (OrcamentoException e) { 
      UtilFaces.addMensagemFaces(e); 
      e.printStackTrace(); 
     } catch (PersistenciaException e) { 
      UtilFaces.addMensagemFaces(e); 
      e.printStackTrace(); 
     } 

    } 

    public void adicionaFonte(FonteDotacao fonteDotacao) { 

     fonteDotacoes.add(fonteDotacao); 
    } 

} 

父模板中有defyned一種形式。 我被卡住了,所以任何提示都會幫助,謝謝。

回答

0

UICommand最常見的原因無法正常工作進行了說明:commandButton/commandLink/ajax action/listener method not invoked or input value not updated

從你給出的代碼,你的情況似乎在下降的情況下1:組件可能不是<h:form>組件中。確保在你的模板文件,你有這樣的結構:

<h:form> 
    <ui:insert name="corpo" /> 
</h:form> 

但是要注意,因爲就像是在你的頁面有一個神的形式,這是不是一個好方法。如果您的模板文件中有<ui:insert name="corpo" />而沒有放在任何表單中,並且開始在頁面內定義<h:form>會更好。舉一個例子(根據您發佈的Facelets代碼):

<h:form> 
    <p:dataTable id="dataTable" var="fonte" value="#{ElaboracaoOrcamentariaControl.dotacao.fontes}"> 

     <p:column headerText="Fonte"> 
      <h:outputText value="#{fonte.fonte.codigo}" /> 
     </p:column> 
     <p:column headerText="Descrição da fonte de recurso"> 
      <h:outputText value="#{fonte.fonte.descricao}" /> 
     </p:column> 
     <p:column headerText="Valor"> 
      <h:outputText value="#{fonte.valor}" /> 
     </p:column> 
     <p:column headerText="Excluir"> 
      <p:commandButton id="selectButton" update=":form:display" immediate="true" icon="ui-icon-search" title="View" process="@this"> 

      </p:commandButton> 
     </p:column> 
    </p:dataTable> 
</h:form> 
相關問題