Boa tarde, estou desenvolvendo uma tela de filtros para fornecedores, e na minha página feita com Primefaces, tenho um campo onde digito o texto que vai ser utilizado para o filtro, e passo o valor deste texto para o Controller onde o mesmo tem um objeto que guarda a descrição do filtro para posteriormente vai ser utilizado para recuperação dos dados. Na página passo a descrição do inputText através da propriedade value para o Controller por meio do seguinte código: value="#{pesquisaFornecedorController.filter.descricao}", mas no objeto localizado no Controller não reflete o texto do inputText na propriedade descrição do objeto filter. Por que será que isto está ocorrendo? segue os trechos do código:
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:p="http://primefaces.org/ui">
<composite:interface>
<composite:attribute name="widgetVar" required="true" />
</composite:interface>
<composite:implementation>
<p:dialog id="buscafornecedor" header="#{msg.busca_fornecedor}"
style="width:600px;min-width:550px;min-height:300px"
widgetVar="#{cc.attrs.widgetVar}" dynamic="true">
...
<p:overlayPanel for="frmToolbar:filtro" id="panelFiltro">
<h:form id="frmFiltro" prependId="false">
<h:panelGrid>
<p:inputText id="txtNomeFornecedor"
value="#{pesquisaFornecedorController.filter.descricao}" />
<p:watermark for="txtNomeFornecedor"
value="#{msg.digite_fornecedor}" />
<p:selectBooleanCheckbox itemLabel="#{msg.exibir_inativos}" />
<p:commandButton value="#{msg.pesquisar}" process="@form"
action="#{pesquisaFornecedorController.pesquisar()}"
icon="ui-icon-search">
</p:commandButton>
</h:panelGrid>
</h:form>
</p:overlayPanel>
...
</p:dialog>
</composite:implementation>
</html>
abaixo segue o código do controller:
@ViewScoped
@Named("pesquisaFornecedorController")
public class PesquisaFornecedorController {
// private List<Fornecedor> fornecedores;
private LazyFornecedorDataModel lazyFornecedores;
@EJB
private FornecedorService fornecedorService;
@Inject
private FornecedorFilter filter;
private DataTable dtFornecedor;
...
public FornecedorFilter getFilter() {
return filter;
}
public void setFilter(final FornecedorFilter filter) {
this.filter = filter;
}
}
aqui o código do objeto que contém a descrição que vai ser utilizada no filtro:
public class FornecedorFilter extends Filter {
public static final FornecedorFilter DEFAULT_FILTER = new FornecedorFilter();
private String descricao = "";
private boolean exibirInativos = false;
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public boolean isExibirInativos() {
return exibirInativos;
}
public void setExibirInativos(boolean exibirInativos) {
this.exibirInativos = exibirInativos;
}
@Override
public Filter getDefault() {
return DEFAULT_FILTER;
}
...
}