所以,我有关于primefaces的问题,我正在尝试使用一个重置面板的按钮,但该按钮不起作用,这是代码。
<?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>
和后面的bean:
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);
}
}
父模板中有一个表格被修改。 我被困在里面所以任何提示都会有所帮助,谢谢。
答案 0 :(得分: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>