Problem com a4j:support e rich:jquery

6 respostas
wagner.gs

Olá! Estou com um problema. Meu jquery plugin funciona corretamente até que utilize algum comando ajax do richfaces. Quando isso acontece a minha máscara simplesmente para de funcionar.

Código da máscara:

<rich:jQuery query="maskMoney({decimal:',',thousands:'.',showSymbol:false})" selector=".dinheiro" timing="onload" id="maskMoney" />

Código do botão que anula o script

<a4j:commandButton action="#{processoController.findByNumero}" id="findByNumero" value="" image="/images/find.png" style="vertical-align: middle" reRender="panelPrincipal,panelAdicionais,advogadosModal"/>

Código do uso da mascara

<h:inputText value="#{processoController.instancia.valorCausa}" size="15"
	id="valorCausa" styleClass="dinheiro" required="true">
	<f:convertNumber type="number" minFractionDigits="2" maxFractionDigits="2" groupingUsed="true" /> 
</h:inputText>

Como posso resolver isso? É algo que estou fazendo errado? Obrigado a todos.

6 Respostas

Michel_Sancovich

kra, tb estou passando por este problema, será que alguem pode nos ajudar?

kirmaier

Bom… eu estou com um problema semelhante ao de vocês.
A minha máscara está funcionando corretamente, o meu problema está na hora de gravar os dados, eu estou pegando os valores todos da mascara. EX: CEP. 32.632-430 assim com a mascara, mas preciso pegar somente os digitos 32632430 pra poder salvar no BD.

Alguém conhece alguma propriedade da própria mascara para fazer isso ?

<h:inputText id="itCEP" value="#{distritoAction.distritoSanitario.cepDts}" label="#{bundle.distritoSanitarioCEP}" size="10" >
                            <rich:jQuery selector="#itCEP" query="mask('99.999-999')" timing="onload" />
                        </h:inputText>

Obrigado

wagner.gs

Michel_Sancovich, o meu problema eu resolvi colocando o código do rich:jQuery dentro do input (igual o kirmaier fez).O problema dessa solução é a repetição de código, se eu nao conseguir resolver isso vou criar um componente facelets para os componentes dos quais necessito de mascara.

kirmaier, no seu caso a solução é simples, basta apenas que vc crie um conversor que eliminará este problema. Deve ter algo pronto na internet q faça isso.

mfcn2000

wagner,

o que está acontecendo é que o jQuery é executado quando a página é carregada, aplicando a máscara a todos os componentes que tenha a referida classe de estilo, ou seja, isso ocorre após a renderização dos componentes. Quando vc faz uma chamada ajax que re-renderiza um desses componentes, o mesmo é substituído por outro atualizado, porém a função javaScript que aplica a máscara ao componente, não é executada novamente. Para resolver isso tente colocar o id da declaração da máscara no reRender do seu commandButton.

Espero que ajude.

juniorsatanas

wagner.gs Estou com o mesmo problema resolveu ?

W

juniorsatanas,

Resolvi o problema da seguinte maneira.

Crie um rich:jquery com o timing definido como onJScall.

<rich:jQuery name="numerico" timing="onJScall" query="numeric()"></rich:jQuery>

Após isso, defina a chamada para a função javascript gerada:

<h:inputText id="txtCodigo" onkeydown="numerico(this)" size="10" value="#{seuMB.codigo}">
    <a4j:support action="#{seuMB.acao}" event="onchange"></a4j:support>
</h:inputText>

Dessa maneira, sempre que uma requisição ajax acontecer, a função jquery continuará sendo executada.

Criado 6 de outubro de 2008
Ultima resposta 1 de jul. de 2010
Respostas 6
Participantes 6