Boa tarde pessoal,
eu tenho um datatable, na qual quero editar o registro desejado. Quando eu clico em “editar” ele não executa a action, ou seja, ele n redireciona para a tela de alterar, e simplesmente da um refresh na minha datatable. Alguém saberia me explicar ?
Aqui está o código:
<h:form id="formcons">
<rich:panel>
<f:facet name="header" >
<h:outputText value="Consulta Infracao"/>
</f:facet>
<h:outputLabel value="Pesquisar por" for="tpoParametro"/>
<h:inputText value="#{infracaoBean.tipoDeParametro}" id="tpoParametro" size="10" maxlength="20" />
<h:commandButton action= "#{infracaoBean.listarInfracoesPorParametro}" value="Pesquisar" />
<h:selectOneRadio id="status" value="#{infracaoBean.status}" style="left:67px;" >
<f:selectItem escape="false" itemLabel="Data" itemValue="0" />
<f:selectItem escape="false" itemLabel="Motorista" itemValue="1" />
<f:selectItem escape="false" itemLabel="Tipo de Multa" itemValue="2" />
</h:selectOneRadio>
<rich:dataTable value="#{infracaoBean.infracoes}" var="i" style=" width : 600px; "
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
cellpadding="0" cellspacing="0" rows="10">
<f:facet name="header">
<rich:columnGroup>
<h:column><h:outputText value="#{lb['codigo']}" /></h:column>
<h:column><h:outputText value="#{lb['dt.infracao']}" /></h:column>
<h:column><h:outputText value="#{lb['hora.infrcao']}" /></h:column>
<h:column><h:outputText value="#{lb['pontuacao']}" /></h:column>
<h:column><h:outputText value="Tipo de Multa" /></h:column>
<h:column><h:outputText value="#{lb['motorista']}" /></h:column>
<h:column><h:outputText value="Pagamento" /></h:column>
<h:column><h:outputText value="#{lb['editar']}" /></h:column>
<h:column><h:outputText value="#{lb['excluir']}" /></h:column>
</rich:columnGroup>
</f:facet>
<h:column>
<h:outputText value="#{i.cdInfracao}"/>
</h:column>
<h:column>
<h:outputText value="#{i.dtInfracao}"/>
</h:column>
<h:column>
<h:outputText value="#{i.horaInfracao}">
<f:convertDateTime type="time" pattern="HH:mm" timeZone="GMT-3"/>
</h:outputText>
</h:column>
<h:column>
<h:outputText value="#{i.tipoInfracao.dsTipoInfracao}" />
</h:column>
<h:column>
<h:outputText value="#{i.catInfracao.descCategoriaInfracao}" />
</h:column>
<h:column>
<h:outputText value="#{i.motorista.nome}" />
</h:column>
<h:column>
<h:selectBooleanCheckbox value="#{i.status}" readonly="true"/>
</h:column>
<h:column>
<h:commandLink action="#{infracaoBean.alterarInfracao}">
<f:setPropertyActionListener target="#{infracaoBean.infracao}"
value="#{i}" />
<h:graphicImage value="/images/edit.png" alt="editar" style="border:0"/>
</h:commandLink>
</h:column>
<h:column>
<h:commandLink action="#{infracaoBean.remover}">
<f:setPropertyActionListener target="#{infracaoBean.infracao}"
value="#{i}" />
<h:graphicImage value="/images/excluir.gif" alt="excluir" style="border:0"/>
</h:commandLink>
</h:column>
</rich:dataTable>
<center><h:outputText value="Nenhuma infração cadastrada." rendered="#{empty infracaoBean.infracoes}" /></center>
</rich:panel>
</h:form>
Coloca o seu método alterarInfracao, e o seu facesconfig? Está usando jsf 2.0?
faces.config
Managed Beans -->
<managed-bean>
<managed-bean-name>categoriaBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.CategoriaBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>categorias</property-name>
<property-class>java.util.List</property-class>
<list-entries/>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>infracaoBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.InfracaoBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>marcaBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.MarcaBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>modeloBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.ModeloBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>obterMarcas</property-name>
<property-class>br.sicf.bean.ModeloBean</property-class>
<list-entries/>
</managed-property>
</managed-bean>
<!--<managed-bean>
<managed-bean-name>motoristaBean</managed-bean-name>
<managed-bean-class>bean.MotoristaBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
-->
<managed-bean>
<managed-bean-name>oficinaBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.OficinaBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>solicitacaoAbastecimentoBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.SolicitacaoAbastecimentoBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>solicitacaoManutencaoBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.SolicitacaoManutencaoBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>solicitacoesManutencoes</property-name>
<property-class>java.util.List</property-class>
<value/>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>solicitacaoTransporteBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.SolicitacaoTransporteBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>telefoneBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.TelefoneBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>telefones</property-name>
<property-class>java.util.List</property-class>
<list-entries/>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>tipoCombustivelBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.TipoCombustivelBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>tipoTelefoneBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.TipoTelefoneBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>tipoVeiculoBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.TipoVeiculoBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>tiposVeiculos</property-name>
<property-class>java.util.List</property-class>
<list-entries/>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>veiculoBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.VeiculoBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>conservacaoBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.ConservacaoBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>fileUploadBean</managed-bean-name>
<managed-bean-class>br.sicf.bean.FileUploadBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<!-- Navegação de Cadastro -->
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>cad_categoria</from-outcome>
<to-view-id>/pages/cadastro/cad_categoria.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_marca</from-outcome>
<to-view-id>/pages/cadastro/cad_marca.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_modelo</from-outcome>
<to-view-id>/pages/cadastro/cad_modelo.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_tipo_veiculo</from-outcome>
<to-view-id>/pages/cadastro/cad_tipo_veiculo.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_infracao</from-outcome>
<to-view-id>/pages/cadastro/cad_infracao.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_veiculo</from-outcome>
<to-view-id>/pages/cadastro/cad_veiculo.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_oficina</from-outcome>
<to-view-id>/pages/cadastro/cad_oficina.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_solicitacao_transporte</from-outcome>
<to-view-id>/pages/cadastro/cad_solicitacao_transporte.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_solicitacao_abastecimento</from-outcome>
<to-view-id>/pages/cadastro/cad_solicitacao_abastecimento.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_solicitacao_manutencao</from-outcome>
<to-view-id>/pages/cadastro/cad_solicitacao_manutencao.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_telefone</from-outcome>
<to-view-id>/pages/cadastro/cad_telefone.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_tipo_telefone</from-outcome>
<to-view-id>/pages/cadastro/cad_tipo_telefone.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_tipo_combustivel</from-outcome>
<to-view-id>/pages/cadastro/cad_tipo_combustivel.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cad_veiculo_combustivel</from-outcome>
<to-view-id>/pages/cadastro/cad_veiculo_combustivel.xhtml</to-view-id>
</navigation-case>
<!-- Navegação de Alteração -->
<navigation-case>
<from-outcome>alt_marca</from-outcome>
<to-view-id>/pages/alterar/alt_marca.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_categoria</from-outcome>
<to-view-id>/pages/alterar/alt_categoria.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_modelo</from-outcome>
<to-view-id>/pages/alterar/alt_modelo.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_tipo_veiculo</from-outcome>
<to-view-id>/pages/alterar/alt_tipo_veiculo.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_infracao</from-outcome>
<to-view-id>/pages/alterar/alt_infracao.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_oficina</from-outcome>
<to-view-id>/pages/alterar/alt_oficina.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_solicitacao_transporte</from-outcome>
<to-view-id>/pages/alterar/alt_solicitacao_transporte.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_solicitacao_manutencao</from-outcome>
<to-view-id>/pages/alterar/alt_solicitacao_manutencao.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_solicitacao_abastecimento</from-outcome>
<to-view-id>/pages/alterar/alt_solicitacao_abastecimento.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_telefone</from-outcome>
<to-view-id>/pages/alterar/alt_telefone.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_tipo_combustivel</from-outcome>
<to-view-id>/pages/alterar/alt_tipo_combustivel.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_tipo_telefone</from-outcome>
<to-view-id>/pages/alterar/alt_tipo_telefone.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>alt_veiculo_combustivel</from-outcome>
<to-view-id>/pages/cadastro/cad_veiculo_combustivel.xhtml</to-view-id>
</navigation-case>
<!-- Navegação de Consultas -->
<navigation-case>
<from-outcome>cons_marca</from-outcome>
<to-view-id>/pages/consulta/cons_marca.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_categoria</from-outcome>
<to-view-id>/pages/consulta/cons_categoria.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_modelo</from-outcome>
<to-view-id>/pages/consulta/cons_modelo.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_tipo_telefone</from-outcome>
<to-view-id>/pages/consulta/cons_tipo_telefone.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_tipo_veiculo</from-outcome>
<to-view-id>/pages/consulta/cons_tipo_veiculo.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_motorista</from-outcome>
<to-view-id>/pages/consulta/cons_motorista.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_infracao</from-outcome>
<to-view-id>/pages/consulta/cons_infracao.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_oficina</from-outcome>
<to-view-id>/pages/consulta/cons_oficina.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_telefone</from-outcome>
<to-view-id>/pages/consulta/cons_oficina.xhtml</to-view-id>
</navigation-case>
<!--<navigation-case>
<from-outcome>cons_telefone</from-outcome>
<to-view-id>/pages/consulta/cons_telefone.xhtml</to-view-id>
</navigation-case>
-->
<navigation-case>
<from-outcome>cons_tipo_combustivel</from-outcome>
<to-view-id>/pages/consulta/cons_tipo_combustivel.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_veiculo</from-outcome>
<to-view-id>/pages/consulta/cons_veiculo.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_solicitacao_transporte</from-outcome>
<to-view-id>/pages/consulta/cons_solicitacao_transporte.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_solicitacao_abastecimento</from-outcome>
<to-view-id>/pages/consulta/cons_solicitacao_abastecimento.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cons_solicitacao_manutencao</from-outcome>
<to-view-id>/pages/consulta/cons_solicitacao_manutencao.xhtml</to-view-id>
</navigation-case>
<!-- Navegação de Pesquisas -->
<navigation-case>
<from-outcome>pesq_marca</from-outcome>
<to-view-id>/pages/pesquisa/pesq_marca.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>pesq_categoria</from-outcome>
<to-view-id>/pages/pesquisa/pesq_categoria.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>pesq_modelo</from-outcome>
<to-view-id>/pages/pesquisa/pesq_modelo.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>pesq_tipo_veiculo</from-outcome>
<to-view-id>/pages/pesquisa/pesq_tipo_veiculo.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>pesq_infracao</from-outcome>
<to-view-id>/pages/pesquisa/pesq_infracao.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<!-- Navegação de detalhamento -->
<navigation-rule>
<navigation-case>
<from-outcome>detalhar_oficina</from-outcome>
<to-view-id>/pages/detalhar/detalhar_oficina.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>detalhar_solicitacao_transporte</from-outcome>
<to-view-id>/pages/detalhar/detalhar_solicitacao_transporte.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>detalhar_solicitacao_manutencao</from-outcome>
<to-view-id>/pages/detalhar/detalhar_solicitacao_manutencao.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<!-- Navegação de redirecionamento nas telas de pesquisa -->
<navigation-rule>
<from-view-id>/pages/pesquisa/pesq_marca.xhtml</from-view-id>
<navigation-case>
<from-action>#{marcaBean.pesquisar}</from-action>
<to-view-id>/pages/consulta/cons_marca.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/pages/pesquisa/pesq_categoria.xhtml</from-view-id>
<navigation-case>
<from-action>#{categoriaBean.pesquisar}</from-action>
<to-view-id>/pages/consulta/cons_categoria.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/pages/pesquisa/pesq_modelo.xhtml</from-view-id>
<navigation-case>
<from-action>#{modeloBean.pesquisar}</from-action>
<to-view-id>/pages/consulta/cons_modelo.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/pages/pesquisa/pesq_tipo_veiculo.xhtml</from-view-id>
<navigation-case>
<from-action>#{tipoVeiculoBean.pesquisar}</from-action>
<to-view-id>/pages/consulta/cons_tipo_veiculo.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/pages/pesquisa/pesq_infracao.xhtml</from-view-id>
<navigation-case>
<from-action>#{infracaoBean.pesquisar}</from-action>
<to-view-id>/pages/consulta/cons_infracao.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/pages/pesquisa/pesq_tipo_combustivel.xhtml</from-view-id>
<navigation-case>
<from-action>#{tipoCombustivelBean.pesquisar}</from-action>
<to-view-id>/pages/consulta/cons_tipo_combustivel.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
<locale-config>
<default-locale>pt_BR</default-locale>
<supported-locale>pt_BR</supported-locale>
</locale-config>
<resource-bundle>
<base-name>br.sicf.resources.messages</base-name>
<var>msg</var>
</resource-bundle>
<resource-bundle>
<base-name>label</base-name>
<var>lb</var>
</resource-bundle>
</application>
alterarInfracao.
public String alterarInfracao(){
return "alt_infracao";
}
Estou utilizando jsf 1.2.
E oq está acontecendo, é simplesmente que, ao invés dele executar a action e fizer o redirecionamento para a pagina de alt_infracao, ele da um refresh na pagina inteira. ou seja, um F5.
ate o momento n resolvi meu problema,
alguem teria como me ajudar ?
Mas o método chega a ser executado?
Não chega não. Quando eu debbugo, ele não passa pelo checkpoint e acaba passando direto.
Saberia me dizer o porquê ?
Binnho
Novembro 8, 2010, 2:10pm
#10
Você já verificou se os outros botões funcionam normalmente?
Onde tem h:column tenta trocar para rich:column
É assim que eu faço e funciona.
Estou passando por esse problema de novo.
aqui está meu rich:dataTable
<rich:panel>
<rich:dataTable value="#{acaoBean.acaos}" var="set">
<rich:column>
<f:facet name="header">
<h:outputText value="Setor" />
</f:facet>
<h:outputText value="#{set.projeto.setor.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Progr / Proje" />
</f:facet>
<h:outputText value="#{set.projeto.progprojStr} : #{set.projeto.seq}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Seq" />
</f:facet>
<h:outputText value="#{set.seq}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{set.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Início" />
</f:facet>
<h:outputText value="#{set.dataIniStr}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Fim" />
</f:facet>
<h:outputText value="#{set.dataFimStr}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Responsável" />
</f:facet>
<h:outputText value="#{set.usuario.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Real.(%)" />
</f:facet>
<h:outputText value="#{set.realizado}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Ações" />
</f:facet>
<h:commandButton image="/recursos/imagem/visualizar.png" action="alterarAcao">
<f:setPropertyActionListener value="#{set}"
target="#{acaoBean.acao}" />
<f:setPropertyActionListener value="#{progprojBean.progProj}"
target="#{acaoBean.progProj}" />
</h:commandButton>
<h:commandLink value="Excluir" action="#{acaoBean.excluir}"
onclick="return confirm('Deseja confirmar a exclusão?');">
<f:setPropertyActionListener value="#{set}"
target="#{acaoBean.acao}" />
</h:commandLink>
</rich:column>
</rich:dataTable>
</rich:panel>
Quando clico em visualizar <h:commandButton image="/recursos/imagem/visualizar.png" action=“alterarAcao”>
ao invés dele executar a action:
<navigation-case>
<from-outcome>alterarAcao</from-outcome>
<to-view-id>/paginas/cadastro/acao/alterar.jsp</to-view-id>
</navigation-case>
ele da um refresh na página,
ou seja, ele atualiza a pagina atual e não redireciona para a action mencionada acima.
Alguem poderia me ajudar ?
Como está o seu “from-view-id” ?
e um detalhe é que. fora do dataTable o action funciona, ou seja, ele redireciona, porém dentro dele não funciona. Jà tentei colcocar o t:saveState, porém continua o mesmo problema. E tentei tbm usar o f:setProperty …
porém sem exito !
[quote=robertoJames]from-view-id ?
Não tenho declarado não.[/quote]
Tem que ter né
<from-view-id>*</from-view-id>
?
seguinte: dentro do codigo n tem from-view-id.
Porém no diagrama, tem um bloco azul, e com descrição [any]. Mas não está declarado no código.
neno
Novembro 16, 2010, 12:10pm
#20
Roberto,
o problema é que command link dentro de um datatable não funciona com o scope request, altere o scopo do manegebean que esta utilizando no commandlink para session no faces-config que deve funcionar.
Isso é claro, se essa não impactar muito em sua aplicação.
Esses é um assunto bem polêmico.
Aqui nesse artigo tem alguma outras dicas que se pode fazer…
http://www.urubatan.com.br/jsf_commandlink_datatable_problemas/
eu acredito que esse problema ja foi resolvido na versão mais atualizada do jsf, não tenho certeza.
Bom é isso.
Abrçs.