[RESOLVIDO] Campo p:inputMask pede a mascara se troca o p:selectOneRadio

6 respostas
V

Boa tarde pessoal,

É o seguinte to fazendo um selectOneMenu que ao renderizar conforme a opção os campos do tipo p:inputMask perde a mascara quando troca de opção no radio.
Alguem sabe corrigir isso?

Segue abaixo meu codigo.

<h:panelGrid columns="2" columnClasses="control-label," styleClass="controls"><h:outputLabel value="Tipo:" for="tipo"/>
					<p:selectOneRadio id="tipo" value="#{clienteBean.tpCliente}" valueChangeListener="#{clienteBean.trocarTipoCliente}" required="true" disabled="#{not empty clienteBean.clienteFis.idCliente or not empty clienteBean.clienteJur.idCliente}" styleClass="row-fluid">
						<f:selectItem itemLabel="Pessoa Física" itemValue="F"/>
						<f:selectItem itemLabel="Pessoa Jurídica" itemValue="J"/>
						<f:ajax event="change" render="opClienteFisJur"/>
					</p:selectOneRadio>
				</h:panelGrid>
				<p:outputPanel id="opClienteFisJur">
					<p:outputPanel id="opClienteFis" rendered="#{clienteBean.renderClienteFis}">

						<h:panelGrid columns="2" columnClasses="control-label," styleClass="controls">
							<h:outputLabel value="CPF:" for="cpf"/>
							<p:inputMask id="cpf" value="#{clienteBean.clienteFis.cpf}" mask="[CPF removido]" styleClass="input-medium"/>

Quando acessa a pagina a mascara ta normal mas se mudar o tipo de cliente ja perde.

Valeu!

6 Respostas

B
<h:panelGrid columns="2" columnClasses="control-label," styleClass="controls"><h:outputLabel value="Tipo:" for="tipo"/>
					<p:selectOneRadio id="tipo" value="#{clienteBean.tpCliente}" valueChangeListener="#{clienteBean.trocarTipoCliente}" required="true" disabled="#{not empty clienteBean.clienteFis.idCliente or not empty clienteBean.clienteJur.idCliente}" styleClass="row-fluid">
						<f:selectItem itemLabel="Pessoa Física" itemValue="F"/>
						<f:selectItem itemLabel="Pessoa Jurídica" itemValue="J"/>
						<f:ajax event="change" render="opClienteFisJur"/>
					</p:selectOneRadio>
				</h:panelGrid>
				<p:outputPanel id="opClienteFisJur">
					<p:outputPanel id="opClienteFis" rendered="#{clienteBean.renderClienteFis}">

						<h:panelGrid columns="2" columnClasses="control-label," styleClass="controls">
							<h:outputLabel value="CPF:" for="cpf"/>
							<p:inputMask id="cpf" value="#{clienteBean.clienteFis.cpf}" mask="[CPF removido]" styleClass="input-medium"/>

Bem vamos tentar simplificar, utilizo um código parecido e não tenho problemas com a mascara, mas tenta não usar valueChangeListener junto com <f:ajax event=“change”, só f:ajax é necessário… muda o rendered do opClienteFis para rendered="#{‘F’ eq clienteBean.tpCliente}" e assim por diante… não sei se isso resolveria mas é uma tentativa.

V

3.4.2

B

mesma versão que estou usando aqui, tenta fazer o que falei anteriormente.

V

betobrito muito obrigado pela implementação que ficou melhor.
Mas não resolveu a questão da mascara.
Consegui resolver dando um onchange=“window.location.reload();” no selectOneRadio o que não ficou bom mas ta resolvendo por enquanto.
Se eu achar uma solução mais classica posto aqui.

Valeu!

B

Blz cara, va desculpando ai não ter resolvido seu problema, mas eu te aconselho até atualizar o prime para versão mais nova, se não me engano 3.5 para ver se não resolve seu problema, infelizmente nos projetos q trabalhei com prime até atualização do browser influenciava no funcionamento dos componentes do mesmo. E boa sorte, espero que resolva.

V

betobrito consegui resolver!

O problema é que eu estou utilizando jquery.js.
Para dar compatibilidade com o primefaces tem que adicionar o seguinte codigo no template.

<script type="text/javascript">
	var j = jQuery.noConflict();
	 // Do something with jQuery
	 j("div p").hide();
    </script>

Muito obrigado!

Criado 17 de abril de 2013
Ultima resposta 18 de abr. de 2013
Respostas 6
Participantes 2