JSF Icefaces - Fomatar CEP

6 respostas
Marques

Colegas,

Na pagina.xhtml abaixo eu preciso formatar o cep quando o usuario digitar.

Tentei fazer usando jquery como abaixo, porém ele não formata.
Obs: Estou usando o icefaces
Onde estou errando?

Muito obrigado,

Marques
<?xml version="1.0" encoding="UTF-8"?>
<!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:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ice="http://www.icesoft.com/icefaces/component">
	<head>
		<title></title>
		<ice:outputStyle href="./xmlhttp/css/xp/xp.css" />
		<script src="/js/jquery-1.3.2.min.js" type="text/javascript"></script>
		<script src="/js/jquery.maskedinput-1.2.2.js" type="text/javascript"></script>
		<script type="text/javascript">
			$(function() {
			$("#cep").mask("99999-999");
			});
		</script>
	</head>
	<body>
		<f:view>
			<f:loadBundle basename="br.com.fit.utils.MessageBundle" var="msg" />
			<ui:composition template="../template.xhtml">
				<ui:define name="top">
					<h:outputText value="#{msg.cadastros_label}" />
					<h:outputText value=" &gt; " />
					<h:outputText value="#{msg.regional_label}" />
				</ui:define>
				<ui:define name="left">
					<ui:include src="menuPrincipalOptions.xhtml" />
				</ui:define>
				<ui:define name="right">
					<ice:form>
						<br />
						<table border="0" cellpadding="0" cellspacing="0"
							class="back_color1">
							
							<tr>
								<td class="td_leftCell">
									<h:outputText value="#{msg.cep_label}" />
								</td>
								<td>
									<ice:inputText id="cep" value="#{regionalMB.enderecoVO.cep}" size="30" />
								</td>
							</tr>

						</table>
					</ice:form>
				</ui:define>
			</ui:composition>
		</f:view>
	</body>
</html>

6 Respostas

Rafael_Carneiro

Tente debugar a função com o firebug ou com um alert para ver se ela está sendo chamada.

rponte

O código javascript parece estar sendo executado antes que a página tenha sido totalmente renderizada, sendo o input de #cep não foi renderizado no cliente ainda.

Tente colocar o código no final da página ou utilize esta função do JQuery no inicio da página:

$(document).ready(function() { // put all your jQuery goodness in here. });
Abraços e boa sorte.

D

Bom eu sei colocar a mascara usando richfaces.O Icefaces tem algum modo de acessar o Jquery??

Com RichFaces ficaria assim:

&lt;f:view&gt;   
         &lt;a4j:form&gt;   
   &lt;a4j:loadScript src="pasta que vc salvou o arquivo /jquery.maskedinput-1.1.4.pack.js" /&gt;     
        &lt;h:inputText id="cpf" size="5"&gt;   
                         &lt;rich:jQuery selector="#cpf" query="mask('[CPF removido]')" timing="onload" /&gt;   
      &lt;/h:inputText&gt;   
&lt;/a4j:form&gt;     
&lt;/f:view&gt;

Espero ter ajudado.

Kleber-rr

Olá Daniel.F, boa tarde.

Mano, eu sei que o post é antigo, mas ele me ajudou muito hoje. Infelizmente, me surgiu uma dúvida agora…

Eu não quero gravar as máscaras no banco… teria como gravar no banco sem as máscaras, e utiliza-las apenas para exibição no form??

Valei.

Daniel.F:
Bom eu sei colocar a mascara usando richfaces.O Icefaces tem algum modo de acessar o Jquery??

Com RichFaces ficaria assim:

&lt;f:view&gt;   
         &lt;a4j:form&gt;   
   &lt;a4j:loadScript src="pasta que vc salvou o arquivo /jquery.maskedinput-1.1.4.pack.js" /&gt;     
        &lt;h:inputText id="cpf" size="5"&gt;   
                         &lt;rich:jQuery selector="#cpf" query="mask('[CPF removido]')" timing="onload" /&gt;   
      &lt;/h:inputText&gt;   
&lt;/a4j:form&gt;     
&lt;/f:view&gt;

Espero ter ajudado.

D

Opa como vai??

Eu nunca tentei mas será que um converter não resolveria seu probelma.
O conveter não é mais é que uma classe que define seu conteúdo será buscado e alterado
no seu componente.No google você achará definições bem melhores que a minha.

Ficaria assim:

Classe Converter que implementar a interface Conveter:

public class SemCNPJ  implements Converter {

	@Override
	public Object getAsObject(FacesContext contexto, UIComponent campo, String valor) {
		return valor;
	}

	@Override
	public String getAsString(FacesContext contexto, UIComponent campo, Object valor) {
		return valor.toString().replaceAll("\\.",").replaceAll("-","").replaceAll("\",")
	}

}

Declara-lo no faces-config:

&lt;converter&gt;
		&lt;converter-id&gt;semCnpj&lt;/converter-id&gt;
		&lt;converter-class&gt;seupacoteSemCNPJ.&lt;/converter-class&gt;
	&lt;/converter&gt;

Chama-lo no seu campo:

&lt;h:inputText id="cpf" size="5"&gt;     
                          &lt;rich:jQuery selector="#cpf" query="mask('[CPF removido]')" timing="onload" /&gt;     
                           &lt;f;converter converterId="semCnpj"&gt;
      &lt;/h:inputText&gt;

Espero que ajude.

Kleber-rr

Valeu amigão, tua sugestão ajudou bastante.

Abs.

Criado 19 de maio de 2009
Ultima resposta 15 de out. de 2010
Respostas 6
Participantes 5