Bom dia galera,
o meu problema eh o seguinte:
eu tenho um formulario de filtro e uma grid(dataTable).
cada um no se form /form.
o problema eh que no form da grid tudo funciona blz, eu clico no botoes/links e eles acessam o metodo chamado na action em questao.
porem quando eu clico no botao do filtro ele nao chama action nenhum e da um reload na pagina e volta pra ela mesmo.
vou postar os arquivos.
LOJA.JSP
<% String lContext = request.getContextPath(); %>
<%@ taglib uri=“http://java.sun.com/jsf/core ” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html ” prefix=“h” %>
<%@ taglib uri=“http://myfaces.apache.org/tomahawk ” prefix=“t” %>
<%@ taglib uri=“http://java.sun.com/jstl/core ” prefix=“c” %>
<head>
</head>
<f:view>
<f:loadBundle basename=“NOME_ARQUIVO_RESOURCES” var=“msgs” />
<TABLE WIDTH=“100%” BORDER=“0” CELLSPACING=“0” CELLPADDING=“0” class=“borda”>
<TR ALIGN="center" VALIGN="MIDDLE" CLASS="cabecalho_especifico">
<TD colspan=3 >
<h:outputText value="#{msgs.TRANSACAO}" />
-
<h:outputText value="#{msgs.mn}" />
</TD>
<TD align="right" >
<button class="btn_img" onclick="abrirPopup('popup.jsp')" />', 300, 300, '');" accesskey="E">
<img src=" <%= lContext %> /images/helpTela.gif" border="0" title="">
</button>
</TD>
</TR>
<h:form>
<tr>
<td align="right">Codigo</td>
<td><t:inputText id="codigo" value="#{meuFaces.loja.pk.codigo}" size="10" maxlength="3" onkeypress="somenteNumerico(event)" styleClass="campo" /></td>
<td align="right">Razao Social</td>
<td><t:inputText id="razaoSocial" value="#{meuFaces.loja.pk.empresa.razaoSocial}" maxlength="40" styleClass="campo" /></td>
</tr>
<tr>
<td colspan=4>
<h:commandButton id="btnConfirmar" action="#{meuFaces.listar}" value="#{msgs.botaoConfirmar}" />
</td>
</tr>
</h:form>
<TR>
<TD colspan="4">
<h:messages showSummary="false" showDetail="true" styleClass="erro" globalOnly="true"/>
</TD>
</TR>
<TR ALIGN="CENTER" VALIGN="MIDDLE" CLASS="cabecalho_tabela">
<TD colspan="4">
<h:form id="formGrid">
<h:dataTable width="100%" rows="10" id="gridLojas" value="#{meuFaces.lojas}" var="loja"
border="1" cellpadding="0" cellspacing="0" rowClasses="background_linha_impar, background_linha_par"
styleClass="tabela" align="center">
<h:column>
<f:facet name="header">
<h:commandLink action="#{meuFaces.ordenarPorCodigoEmpresa}">
<t:graphicImage value="/images/#{msgs[meuFaces.tipoClassificacao]}" rendered="#{meuFaces.flgOrdenacaoCodigoEmpresa}" border="0"/>
<f:verbatim> </f:verbatim>
<h:outputText value="#{msgs['loja.gridCodigoEmpresa']}" />
</h:commandLink>
</f:facet>
<h:outputText value="#{loja.pk.empresa.codigo}" >
<f:convertNumber minIntegerDigits="3" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:commandLink action="#{meuFaces.ordenarPorRazaoSocial}">
<t:graphicImage value="/images/#{msgs[meuFaces.tipoClassificacao]}" rendered="#{meuFaces.flgOrdenacaoRazaoSocial}" border="0"/>
<f:verbatim> </f:verbatim>
<h:outputText value="#{msgs['loja.gridRazaoSocial']}" />
</h:commandLink>
</f:facet>
<h:outputText value="#{loja.pk.empresa.razaoSocial}" />
</h:column>
<h:column>
<f:facet name="header">
<h:commandLink action="#{meuFaces.ordenarPorCodigo}">
<t:graphicImage value="/images/#{msgs[meuFaces.tipoClassificacao]}" rendered="#{meuFaces.flgOrdenacaoCodigo}" border="0"/>
<f:verbatim> </f:verbatim>
<h:outputText value="#{msgs.gridCodigo}" />
</h:commandLink>
</f:facet>
<h:outputText value="#{loja.pk.codigo}" >
<f:convertNumber minIntegerDigits="3" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:commandLink action="#{meuFaces.ordenarPorNomeFantasia}">
<t:graphicImage value="/images/#{msgs[meuFaces.tipoClassificacao]}" rendered="#{meuFaces.flgOrdenacaoNomeFantasia}" border="0"/>
<f:verbatim> </f:verbatim>
<h:outputText value="#{msgs['loja.gridNomeFantasia']}" />
</h:commandLink>
</f:facet>
<h:outputText value="#{loja.nomeFantasia}" />
</h:column>
<h:column>
<f:facet name="header">
<h:commandLink action="#{meuFaces.ordenarPorCodigoCidade}">
<t:graphicImage value="/images/#{msgs[meuFaces.tipoClassificacao]}" rendered="#{meuFaces.flgOrdenacaoCodigoCidade}" border="0"/>
<f:verbatim> </f:verbatim>
<h:outputText value="#{msgs['loja.gridCodigoCidade']}" />
</h:commandLink>
</f:facet>
<h:outputText value="#{loja.cidade.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:commandLink action="#{meuFaces.ordenarPorNomeCidade}">
<t:graphicImage value="/images/#{msgs[meuFaces.tipoClassificacao]}" rendered="#{meuFaces.flgOrdenacaoNomeCidade}" border="0"/>
<f:verbatim> </f:verbatim>
<h:outputText value="#{msgs['loja.gridNomeCidade']}" />
</h:commandLink>
</f:facet>
<h:outputText value="#{loja.cidade.nome}" />
</h:column>
<h:column>
<f:facet name="header">
<h:commandLink action="#{meuFaces.ordenarPorCodigoRegional}">
<t:graphicImage value="/images/#{msgs[meuFaces.tipoClassificacao]}" rendered="#{meuFaces.flgOrdenacaoCodigoRegional}" border="0"/>
<f:verbatim> </f:verbatim>
<h:outputText value="#{msgs['loja.gridCodigoRegional']}" />
</h:commandLink>
</f:facet>
<h:outputText value="#{loja.regional.pk.codigo}" />
</h:column>
<h:column>
<f:facet name="header">
<h:commandLink action="#{meuFaces.ordenarPorFlgTransmitido}">
<t:graphicImage value="/images/#{msgs[meuFaces.tipoClassificacao]}" rendered="#{meuFaces.flgOrdenacaoFlgTransmitido}" border="0"/>
<f:verbatim> </f:verbatim>
<h:outputText value="#{msgs.gridTransmitido}" />
</h:commandLink>
</f:facet>
<h:outputText value="#{msgs[loja.flgTransmitido.descricao]}" />
</h:column>
<h:column>
<f:facet name="header">
<h:commandLink action="#{meuFaces.ordenarPorDataUltimaAlteracao}">
<t:graphicImage value="/images/#{msgs[meuFaces.tipoClassificacao]}" rendered="#{meuFaces.flgOrdenacaoDataUltimaAlteracao}" border="0"/>
<f:verbatim> </f:verbatim>
<h:outputText value="#{msgs.gridDataUltimaAlteracao}" />
</h:commandLink>
</f:facet>
<h:outputText value="#{loja.dataHoraUltimaAlteracaoFormatada}" />
</h:column>
<h:column>
<h:panelGrid columns="1" align="center">
<h:panelGroup>
<h:commandButton action="#{meuFaces.editar}" image="/images/editar.gif" title="Editar"/>
<f:verbatim> </f:verbatim>
<h:commandButton action="#{meuFaces.detalhar}" image="/images/detalhar.gif" title="Detalhar" />
</h:panelGroup>
</h:panelGrid>
</h:column>
<f:facet name="footer">
<h:panelGrid columns="1" align="center">
<t:dataScroller id="paginador" for="gridLojas" fastStep="10"
pageCountVar="pageCount" pageIndexVar="pageIndex"
styleClass="scroller" paginator="true" paginatorMaxPages="5"
paginatorTableClass="paginator"
paginatorActiveColumnStyle="font-weight:bold;">
<f:facet name="first">
<t:graphicImage value="/images/pagination_first.gif" border="0" title="Primeira"/>
</f:facet>
<f:facet name="last">
<t:graphicImage value="/images/pagination_last.gif" border="0" title="Última"/>
</f:facet>
<f:facet name="previous">
<t:graphicImage value="/images/pagination_prev.gif" border="0" title="Anterior"/>
</f:facet>
<f:facet name="next">
<t:graphicImage value="/images/pagination_next.gif" border="0" title="Próxima"/>
</f:facet>
</t:dataScroller>
</h:panelGrid>
</f:facet>
</h:dataTable>
</h:form>
</TD>
</TR>
</TABLE>
</f:view>
MeuFaces.java
package view;
import java.util.Comparator;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
public class MeuFaces extends FacesAb {
//Facade
private SuporteFacade facade = FacadeFactory . getSuporteFacade ();
//Usado para preencher a grid
private DataModel lojas ;
/*
* Usado para receber e setar valores nos campos do filtro da tela.
*/
private LojaDTO loja ;
/*
* Usados para indicar visualmente qual o
* critério de ordenação atual da grid.
*/
private boolean flgOrdenacaoCodigoEmpresa ;
private boolean flgOrdenacaoRazaoSocial ;
private boolean flgOrdenacaoNomeFantasia ;
private boolean flgOrdenacaoCodigoCidade ;
private boolean flgOrdenacaoNomeCidade ;
private boolean flgOrdenacaoCodigoRegional ;
private int FLG_CODIGO_EMPRESA_ORDENACAO = - 1 ;
private int FLG_RAZAO_SOCIAL_ORDENACAO = - 1 ;
private int FLG_NOME_FANTASIA_ORDENACAO = - 1 ;
private int FLG_CODIGO_CIDADE_ORDENACAO = - 1 ;
private int FLG_NOME_CIDADE_ORDENACAO = - 1 ;
private int FLG_CODIGO_REGIONAL_ORDENACAO = - 1 ;
public LojaLstFaces () {
listar ();
setFlgOrdenacaoCodigo ( true );
setFlgOrdenacaoRazaoSocial ( false );
}
public DataModel getLojas () {
return lojas ;
}
public void setLojas ( DataModel pLojas ) {
lojas = pLojas ;
}
public LojaDTO getLoja () {
return loja ;
}
public void setLoja ( LojaDTO pLoja ) {
loja = pLoja ;
}
private Comparator porCodigoEmpresa = new Comparator () {
public int compare ( Object pObj1 , Object pObj2 ) {
Row lR1 = ( Row ) pObj1 ;
Row lR2 = ( Row ) pObj2 ;
LojaDTO lLoja1 = ( LojaDTO ) lR1 . getData ();
LojaDTO lLoja2 = ( LojaDTO ) lR2 . getData ();
return FLG_CODIGO_EMPRESA_ORDENACAO * ( lLoja1 . getPk (). getEmpresa (). getCodigo ().
compareTo ( lLoja2 . getPk (). getEmpresa (). getCodigo ()));
}
};
private Comparator porRazaoSocial = new Comparator () {
public int compare ( Object pObj1 , Object pObj2 ) {
Row lR1 = ( Row ) pObj1 ;
Row lR2 = ( Row ) pObj2 ;
LojaDTO lLoja1 = ( LojaDTO ) lR1 . getData ();
LojaDTO lLoja2 = ( LojaDTO ) lR2 . getData ();
return FLG_RAZAO_SOCIAL_ORDENACAO * ( lLoja1 . getRazaoSocial ().
compareTo ( lLoja2 . getRazaoSocial ()));
}
};
public String ordenarPorCodigoEmpresa (){
if ( getLojas () != null ) {
// Alterando a ordem da classificacao (crescente ou decrescente)
FLG_CODIGO_EMPRESA_ORDENACAO = FLG_CODIGO_EMPRESA_ORDENACAO * - 1 ;
(( OrdenacaoDataModel ) getLojas ()). ordenar ( porCodigoEmpresa );
setTipoClassificacao ( parseToTipoClassificacao ( FLG_CODIGO_EMPRESA_ORDENACAO ));
setFlgOrdenacaoCodigoEmpresa ( true );
setFlgOrdenacaoRazaoSocial ( false );
setFlgOrdenacaoCodigo ( false );
setFlgOrdenacaoNomeFantasia ( false );
setFlgOrdenacaoCodigoCidade ( false );
setFlgOrdenacaoNomeCidade ( false );
setFlgOrdenacaoCodigoRegional ( false );
setFlgOrdenacaoFlgTransmitido ( false );
setFlgOrdenacaoDataUltimaAlteracao ( false );
}
return null ;
}
public String ordenarPorRazaoSocial () {
if ( getLojas () != null ) {
// Alterando a ordem da classificacao (crescente ou decrescente)
FLG_RAZAO_SOCIAL_ORDENACAO = FLG_RAZAO_SOCIAL_ORDENACAO * - 1 ;
(( OrdenacaoDataModel ) getLojas ()). ordenar ( porRazaoSocial );
setTipoClassificacao ( parseToTipoClassificacao ( FLG_RAZAO_SOCIAL_ORDENACAO ));
setFlgOrdenacaoCodigoEmpresa ( false );
setFlgOrdenacaoRazaoSocial ( true );
setFlgOrdenacaoCodigo ( false );
setFlgOrdenacaoNomeFantasia ( false );
setFlgOrdenacaoCodigoCidade ( false );
setFlgOrdenacaoNomeCidade ( false );
setFlgOrdenacaoCodigoRegional ( false );
setFlgOrdenacaoFlgTransmitido ( false );
setFlgOrdenacaoDataUltimaAlteracao ( false );
}
return null ;
}
/*
* Usado para preencher a grid.
* É também chamado pela tela de cadastro para atualizar a grid.
*/
public String listar () {
List lstLojas = ( List ) facade . obterLojasPorFiltro ( getLoja ());
OrdenacaoDataModel lOrdenacaoDataModel = new OrdenacaoDataModel ( new ListDataModel ( lstLojas ));
setLojas ( lOrdenacaoDataModel );
return LojaNavegacaoIf . LISTAR ;
}
public String editar () {
prepararAlterar ();
return LojaNavegacaoIf . CADASTRAR ;
}
public String detalhar (){
prepararDetalhar ();
return LojaNavegacaoIf . CADASTRAR ;
}
public boolean getFlgOrdenacaoRazaoSocial () {
return flgOrdenacaoRazaoSocial ;
}
public void setFlgOrdenacaoRazaoSocial ( boolean pFlgOrdenacaoRazaoSocial ) {
flgOrdenacaoRazaoSocial = pFlgOrdenacaoRazaoSocial ;
}
public boolean isFlgOrdenacaoCodigoCidade () {
return flgOrdenacaoCodigoCidade ;
}
public void setFlgOrdenacaoCodigoCidade ( boolean pFlgOrdenacaoCodigoCidade ) {
flgOrdenacaoCodigoCidade = pFlgOrdenacaoCodigoCidade ;
}
public boolean isFlgOrdenacaoCodigoEmpresa () {
return flgOrdenacaoCodigoEmpresa ;
}
public void setFlgOrdenacaoCodigoEmpresa ( boolean pFlgOrdenacaoCodigoEmpresa ) {
flgOrdenacaoCodigoEmpresa = pFlgOrdenacaoCodigoEmpresa ;
}
public boolean isFlgOrdenacaoCodigoRegional () {
return flgOrdenacaoCodigoRegional ;
}
public void setFlgOrdenacaoCodigoRegional ( boolean pFlgOrdenacaoCodigoRegional ) {
flgOrdenacaoCodigoRegional = pFlgOrdenacaoCodigoRegional ;
}
public boolean isFlgOrdenacaoNomeCidade () {
return flgOrdenacaoNomeCidade ;
}
public void setFlgOrdenacaoNomeCidade ( boolean pFlgOrdenacaoNomeCidade ) {
flgOrdenacaoNomeCidade = pFlgOrdenacaoNomeCidade ;
}
public boolean isFlgOrdenacaoNomeFantasia () {
return flgOrdenacaoNomeFantasia ;
}
public void setFlgOrdenacaoNomeFantasia ( boolean pFlgOrdenacaoNomeFantasia ) {
flgOrdenacaoNomeFantasia = pFlgOrdenacaoNomeFantasia ;
}
}
Configuracao dos Beans
<?xml version=“1.0” encoding=“UTF-8”?>
<!DOCTYPE faces-config PUBLIC “-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN”
“<a href="http://java.sun.com/dtd/web-facesconfig_1_0.dtd"> http://java.sun.com/dtd/web-facesconfig_1_0.dtd</a> ”>
<faces-config>
<managed-bean>
<managed-bean-name> meuFaces</managed-bean-name>
<managed-bean-class> view.MeuFaces</managed-bean-class>
<managed-bean-scope> session</managed-bean-scope>
</managed-bean>
</faces-config>
no arquivo loja.jsp
quando eu coloco o dataTable e o filtro do formulario em um sor < form
todo botao ou link que eu clico ele somente da um reload na pagina, mas nao chama o metodo especificado na action
quando eu separei coloquei um form para cada o dataTable funcionou, mas o filtro do form nao funcionou, nao chama o metodo especificado no commandButton que eh o meuFaces.listar, que eh o metodo Listar do MeuFaces.java.
Alguem tem alguma ideia desse erro?, sera um bug do myFaces?
a versao do estou utilizando o Jboss4.0.4.GA
e a versao do MyFaces eh 1.1.3
eh a versao do myFaces que vem no Jboss
fica no diretorio
JBOSS_HOMME\server\default\deploy\jbossweb-tomcat55.sar\jsf-libs
qualquer ajuda sera bem vinda.
desde ja muito obrigado!
um abraço
Du