Ir para conteúdo
Fórum Script Brasil

Amanda Makino

Membros
  • Total de itens

    20
  • Registro em

  • Última visita

Tudo que Amanda Makino postou

  1. Resolvido! Criei um Converter (conversor) que trata a string vazia e o utilizei diretamente no meu xhtml... Conversor: @Name("stringVaziaConverter") public class StringVaziaConverter implements Converter{ public Object getAsObject(FacesContext arg0, UIComponent arg1, String valor) { if (valor.equals("")) return null; else return valor; } public String getAsString(FacesContext context, UIComponent component, Object object) { if (object == null) return null; else return object.toString(); } } Xhtml: <h:panelGrid columns="1"> <h:panelGrid columns="1"> <h:outputText value="#{msgs['complemento']}" styleClass="output"/> <h:inputText id="complemento" maxlength="10" value="#{participanteBean.participante.endereco.complemento}" style="width:250px;" styleClass="caixatextoCadastro" converter="#{stringVaziaConverter}" onfocus="this.style.backgroundColor='#{a4jSkin.additionalBackgroundColor}'" onblur="this.style.backgroundColor='#{a4jSkin.generalBackgroundColor}'" /> </h:panelGrid> </h:panelGrid> Então deu certo! ;)
  2. Gente, é o seguinte... Tenho um formulário onde nem todos os campos são obrigatórios... E quando o usuário salva o registro sem preencher tais campos, suas respectivas propriedades não estão ficando nulas, e sim, sendo preenchidas com uma string vazia (''). Ou seja.... No meu xhtml, por exemplo, eu tenho: <h:inputText id="complemento" maxlength="100" value="#{participanteBean.participante.endereco.complemento}" style="width:400px;" styleClass="caixatextoCadastro" onfocus="this.style.backgroundColor='#{a4jSkin.additionalBackgroundColor}'" onblur="this.style.backgroundColor='#{a4jSkin.generalBackgroundColor}'" /> Aí o usuário não preenche o campo complemento e clica em salvar.... o que é super normal... u.u Até aí tudo bem... só que no meu bean a propriedade complemento, ao invés de estar nula, está como string vazia. E consequentemente essa string vazia está indo pro banco... Bom, pra solucionar isso... Eu estou tratando o valor recebido lá no set da propriedade: public void setComplemento(String complemento) { this.complemento = (complemento.length() == 0) ? null : complemento; } Mas, poxa, eu vou ter que fazer isso em todos os campos do tipo String que não forem obrigatórios no form?! Sinceramente não gostei dessa solução... Não teria um jeito melhor de impedir a gravação de strings vazias no banco?! Alguma configuração no servidor, no banco de dados... sei lá... o.O Utilizo o PostgreSQL aqui.... Se alguém tiver uma luz... por favor... Vlw! ;)
  3. Amanda Makino

    Revezamentos

    Ahhhh!! Deu certo!!!! \o/ Finalmente! O problema é que a função estava passando a diferença em milisegundos para o cálculo do mod (%). E o que deveria passar era a diferença em dias, então fiz o seguinte: public Long CalcularHorario(Date dataItem, String[] sequencia, Date dataCriacao) { Long diferencaEmMiliSegundos = dataItem.getTime() - dataCriacao.getTime(); Long diferencaEmDias = diferencaEmMiliSegundos/(1000L*60L*60L*24L); return Long.parseLong(sequencia[(int) (diferencaEmDias % sequencia.length)]); } E funcionou! Nem acredito!! hehe!! Obrigada, Isoron!!! ;)
  4. Amanda Makino

    Revezamentos

    Ahhh sim... q simples.. ^^ rsrsrs Vlw... Mas desse modo não funcionou... =/ Pra testar eu cadastrei um revezamento e logo depois o consultei... O calendário da tela de consulta deveria estar do mesmo jeito que o da tela de cadastro, afinal, criei e consultei no mesmo dia... Mas não é o que acontece... =/ Quando consulto e mando calcular os horários e jogar no calendário certinho... Fica tudo embaralhado... Método: public Long CalcularHorario(Date dataItem, String[] sequencia, Date dataCriacao) { Long utDataItem = dataItem.getTime(); Long utDataCriacao = dataCriacao.getTime(); return Long.parseLong(sequencia[(int) (utDataItem - utDataCriacao) % sequencia.length]); } Prints no endereço: http://novo.xpg.com.br/site/index.php?uid=1104717867551502 Passos para visualizá-los: - clique no "+" de Fotos - abra o álbum Aplicação - clique na primeira foto ("Cadastrando"). - depois é só indo pra frente...
  5. Amanda Makino

    Revezamentos

    Só achei o caminho inverso.. conversão de unix time para date... =/
  6. Amanda Makino

    Revezamentos

    Humm.. então tá! ^^ rsrs Mas então... estou tentando converter a data para unix time no meu bean... Mas não estou conseguindo... Qual a sintaxe java pra isso?!
  7. Amanda Makino

    Revezamentos

    Vixi... mas em 2038 parece que o Unix Time vai dar pau... ><' rs Será que não tem outro modo?!
  8. Amanda Makino

    Revezamentos

    iSoron, nossa... muito obrigada pela resposta! Vou tentar implementar sua sugestão! Tenho quase certeza que irá dar certo... Depois eu volto para confirmar isto.. Vlw, obrigada mesmo!! você é um gênio! :D Estava ficando louca aqui sem uma solução..rsrs ^^
  9. Amanda Makino

    Revezamentos

    Caros, a situação é a seguinte... Estou implementando um programa de Cadastro de Revezamentos Esses revezamentos são utilizados por aqueles funcionários que não fazem somente um horário todos os dias (como é de costume)... Eles fazem revezamentos, por exemplo: na segunda e na terça... fazem o horário da manhã... na quarta e na quinta.. trabalham à noite... sábado folgam... domingo trabalham no horário da tarde... e assim vai... Bem, andei olhando alguns sistemas de ponto pra ter uma idéia de como fazer esse cadastro... E vi um que achei bem interessante... só que é desktop... O que ele faz: - Na tela de cadastro... um "calendário" é preenchido automaticamente de acordo com a data atual: - Esse calendário é preenchido de acordo com o que foi preenchido na escala (seqüência de horários). Vejam só: - Na consulta, o programa exibe um calendário de acordo com a data atual e calcula quais são os horários respectivos para cada dia.. preenchendo-o. Então se eu cadastrei hoje esse revezamento... com a primeira coluna do calendário da seguinte forma: 1 2 3 4 1 2 3 4 Se eu for consultá-lo na sexta, essa primeira coluna estará: 4 1 2 3 4 1 2 3 O meu grande problema é esse... como preencher esse calendário automaticamente de acordo com a data atual nessa consulta? Sendo que: - não gravo um horário pra cada dia do ano... - gravo a escala (seqüencia de horários) e - gravo a data de criação do revezamento Alguma luz?! Já pensei tanto numa solução... mas não consigo encontrar nenhuma! >< Vlw, pessoal..
  10. Olá! No meu trabalho precisei implementar uma função para deixar tudo em maiúsculo e remover acentos. Segue a função que implementei: function FormataInfo(){ var input = document.getElementsByTagName('input') var textarea = document.getElementsByTagName('textarea') var especiais = "ÁÉÍÓÚÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÃÕÇ!@#$%^*_+=~`´"; var corretas = "AEIOUAEIOUAEIOUAEIOUAOC_____________"; // Percorre todos os campos contidos na página que sejam do tipo textarea. for(var i=0; i<textarea.length; i++) { // Passa todos os caracteres do textarea para maiúsculo. textarea[i].value = textarea[i].value.toUpperCase(); // Percorre o array de caracteres especiais. for(var j=0; j<especiais.length; j++) { // Percorre os caracteres contidos no campo. for(var k=0; k<textarea[i].value.length; k++) { textarea[i].value = textarea[i].value.replace(especiais.substr(j,1),corretas.substr(j,1)); textarea[i].value = textarea[i].value.replace("_",""); } } } // Percorre todos os campos contidos na página que sejam do tipo input (Text). for(var l=0; l<input.length; l++) { if (input[l].type == 'text') { // Passa todos os caracteres do input para maiúsculo. input[l].value = input[l].value.toUpperCase(); // Percorre o array de caracteres especiais. for(var m=0; m<especiais.length; m++) { // Percorre os caracteres contidos no campo. for(var n=0; n<input[l].value.length; n++) { input[l].value = input[l].value.replace(especiais.substr(m,1),corretas.substr(m,1)); input[l].value = input[l].value.replace("_",""); } } } } } Espero que tenha ajudado! ;) Ah! E a função é chamada no submit do meu form. Assim: <h:form id="formCadastro" onsubmit="FormataInfo();">
  11. Poxa, vlw, Giga!! Deu certo! E sem gambiarras! hahaha! ^^ Vlw mesmo!! E vlw pelo toque do try catch... realmente... uma mão na roda! xD Abraço! o/ function ValidarCamposObrigatorios(form){ var qtdErros = 0; var inputs = document.getElementsByTagName('input'); // Remove as imagens que já estavam sendo mostradas. while(img = document.getElementById("imgInputErro")) { img.parentNode.removeChild(img); } while(img = document.getElementById("imgInputOk")) { img.parentNode.removeChild(img); } // Percorre os inputs da tela verificando a obrigatoriedade. for (x in inputs) { var imgInputOk = document.createElement('img'); imgInputOk.setAttribute('src', '/lanfredi/imagens/validar_ok.gif'); imgInputOk.setAttribute('id', 'imgInputOk'); var imgInputErro = document.createElement('img'); imgInputErro.setAttribute('src', '/lanfredi/imagens/validar_erro.gif'); imgInputErro.setAttribute('id', 'imgInputErro'); input = inputs[x]; // Verifica se o input é obrigatório. if (input.className == "caixatextoCadastroObrigatorio") { if(input.value == ""){ qtdErros += 1; // insere a imagem de erro ao lado da caixa de texto. insertAfter(imgInputErro, input); // coloca o foco no primeiro campo obrigatório não preenchido. if(qtdErros == 1) input.focus(); }else // insere a imagem de ok ao lado da caixa de texto. insertAfter(imgInputOk, input); } } if(qtdErros > 0){ document.getElementById(form.id + ':' + 'msgErroObrigatorio').style.display = 'inline'; document.getElementById(form.id + ':' + 'imgErro').style.display = 'inline'; return false; }else { document.getElementById(form.id + ':' + 'msgErroObrigatorio').style.display = 'none'; document.getElementById(form.id + ':' + 'imgErro').style.display = 'none'; return true; } }
  12. Aeeeee!! Enfim, resolvido! Gambiarras pra que te quero!!!!! \o/ rsrs... Como o meu problema é que no submit automático (executado após remover as imagens do form), a execução entrava no for de imagens e não saía... Fiz o seguinte... Coloquei um hidden com valor igual a true na minha página... E então eu verifico o valor dele... só entro no for se ele for true... if(auxiliar.value == 'true') { // Remove as imagens que já estavam sendo mostradas. for (w in imgs) { if (imgs[w].id == "imgInputErro" || imgs[w].id == "imgInputOk") { imgs[w].parentNode.removeChild(imgs[w]); auxiliar.value = 'false'; } } } Após remover, seto o hidden como false, pra que a execução não entre no for denovo... Pulado o for... ele vai pro fim da função.. onde seto o hidden como true. auxiliar.value = 'true'; if(qtdErros > 0){ document.getElementById(nameContainer + 'msgErroObrigatorio').style.display = 'inline'; document.getElementById(nameContainer + 'imgErro').style.display = 'inline'; return false; }else { document.getElementById(nameContainer + 'msgErroObrigatorio').style.display = 'none'; document.getElementById(nameContainer + 'imgErro').style.display = 'none'; return true; } pronto... deu certo! HUSAHUAS! Nem acredito! rs \o/ Bom, mais uma vez... vlw, Giga!!! Se não fosse você.. não sairia nada!! hehe!! Vlw! ;) Ufa!
  13. Hum... vem do BD... Ah... então acho que você deve utilizar ajax... pra isso...
  14. Ahh então... Eu já faço isso... é que não postei a função inteira.. Segue a função inteira: function ValidarCamposObrigatorios(form){ alert('Entrando na Função ValidarCamposObrigatorios...'); CaixaAlta(); var inputs = document.getElementsByTagName('input'); var imgs = document.getElementsByTagName("img"); var qtdErros = 0; alert('Entrando no for de imagens...'); // Remove as imagens que já estavam sendo mostradas. for (w in imgs) { if (imgs[w].id == "imgInputErro" || imgs[w].id == "imgInputOk") { alert('Removendo imagem'); imgs[w].parentNode.removeChild(imgs[w]); } } alert('Saindo do for de imagens...'); // Percorre os inputs da tela verificando a obrigatoriedade. for (x in inputs) { var imgInputOk = document.createElement('img'); imgInputOk.setAttribute('src', '/lanfredi/imagens/validar_ok.gif'); imgInputOk.setAttribute('id', 'imgInputOk'); var imgInputErro = document.createElement('img'); imgInputErro.setAttribute('src', '/lanfredi/imagens/validar_erro.gif'); imgInputErro.setAttribute('id', 'imgInputErro'); input = inputs[x]; // Verifica se o input é obrigatório. if (input.className == "caixatextoCadastroObrigatorio") { if(input.value == ""){ qtdErros += 1; // insere a imagem de erro ao lado da caixa de texto. insertAfter(imgInputErro, input); // coloca o foco no primeiro campo obrigatório não preenchido. if(qtdErros == 1) input.focus(); }else // insere a imagem de ok ao lado da caixa de texto. insertAfter(imgInputOk, input); } } var nameContainer = form.id + ':'; alert(qtdErros); if(qtdErros > 0){ document.getElementById(nameContainer + 'msgErroObrigatorio').style.display = 'inline'; document.getElementById(nameContainer + 'imgErro').style.display = 'inline'; return false; }else { document.getElementById(nameContainer + 'msgErroObrigatorio').style.display = 'none'; document.getElementById(nameContainer + 'imgErro').style.display = 'none'; return true; } } Segue a chamada: <h:form id="formCadastro" onsubmit="return ValidarCamposObrigatorios(this);"> Bom, coloquei 5 alerts no meio da função... pra analisar o que está acontecendo..rsrs - Um para me mostrar quando a execução chama a minha função. - Um para me mostrar quando a execução entra no for de imagens - Um para me mostrar quando a execução remove uma imagem. - Um para quando ela sai do for de imagens - Um para me mostrar a quantidade de erros Ok.. Na primeira vez que tento salvar sem preencher nada, é exibido pra mim: - Entrando na Função ValidarCamposObrigatorios... - Entrando no for de imagens... - Saindo do for de imagens... - 3. Na segunda vez que tento salvar sem preencher nada, é exibido pra mim: - Entrando na Função ValidarCamposObrigatorios... - Entrando no for de imagens... - Removendo imagem - Removendo imagem - Removendo imagem - Entrando na Função ValidarCamposObrigatorios... - Entrando no for de imagens... E então dou ok... e pronto... meu modal some! Não sei porque... Será que não tá renderizando as imagens?! Inexplicável... ><' O duro é que teve uma vez que executei.. e que deu certo!!!! Fez tudo certinho!!! Mas isso foi depois de umas dez vezes que deu errado... =/ Não sei o que fazer... :(
  15. Oi, Gigabyte. Hahaha! Tudo bem... Foi só eu pesquisar um pouquinho e já me veio a solução do insertAfter... O que importa é a idéia, né?! ^^ rs Então, Giga.. vlw!! Deu certo.. está removendo agora... Mas...rsrs... Parece que ao remover as imagens, acontece um submit no form... a função é chamada novamente... só que o meu modal é fechado... ¬¬ Minha função pra teste: function ValidarCamposObrigatorios(form){ alert('Entrou na Função ValidarCamposObrigatorios'); var inputs = document.getElementsByTagName('input'); var imgs = document.getElementsByTagName("img"); // Remove as imagens que já estavam sendo mostradas. for (w in imgs) { if (imgs[w].id == "imgInputErro" || imgs[w].id == "imgInputOk") imgs[w].parentNode.removeChild(imgs[w]); } // Inicia form. var qtdErros = 0; // Percorre os inputs da tela verificando a obrigatoriedade. for (x in inputs) { var imgInputOk = document.createElement('img'); imgInputOk.setAttribute('src', '/lanfredi/imagens/validar_ok.gif'); imgInputOk.setAttribute('id', 'imgInputOk'); var imgInputErro = document.createElement('img'); imgInputErro.setAttribute('src', '/lanfredi/imagens/validar_erro.gif'); imgInputErro.setAttribute('id', 'imgInputErro'); input = inputs[x]; // Verifica se o input é obrigatório. if (input.className == "caixatextoCadastroObrigatorio") { if(input.value == ""){ qtdErros += 1; // insere a imagem de erro ao lado da caixa de texto. insertAfter(imgInputErro, input); // coloca o foco no primeiro campo obrigatório não preenchido. if(qtdErros == 1) input.focus(); }else // insere a imagem de ok ao lado da caixa de texto. insertAfter(imgInputOk, input); } } } Veja só a seqüência de acontecimentos: - 1º quadro: apareceu depois que cliquei em salvar. - 2º quadro: foi depois que eu cliquei no Ok do primeiro alert a aparecer. (Procedimento normal até aí) - 3º quadro: apareceu após eu ter clicado em salvar novamente. - 4º quadro: apareceu após ter clicado no Ok do segundo alert a aparecer. Depois de ter clicado no Ok do alert que apareceu no 4º quadro... Acontece o submit e o meu form é fechado... :(
  16. Bem, "resolvi"(em partes) o que eu queria fazer... Coisas que não deram certo: - Percorrer os elementos do form dessa forma: for (x in formulario.elements) { } - Utilizar a notação: el.parentNode.insertAfter(img,el); Soluções: - Recuperei o array de inputs presentes na página e os percorri: var inputs = document.getElementsByTagName('input'); for (x in inputs) { } - No HTML DOM não existe insertAfter, somente insertBefore... Então fiz a seguinte função: function insertAfter(newElement,targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement) { parent.appendChild(newElement); } else { parent.insertBefore(newElement,targetElement.nextSibling); } } E a chamo da seguinte forma dentro do for dos inputs: for (x in inputs) { input = inputs[x]; // insere a imagem de erro ao lado da caixa de texto. insertAfter(imgInputErro, input); } E então deu certo! Agora adiciono dinamicamente minhas imagens de erro e de Ok em frente aos inputs! :) Minha função: function ValidarCamposObrigatorios(){ var inputs = document.getElementsByTagName('input'); var textareas = document.getElementsByTagName('textarea'); var combos = document.getElementsByTagName('select'); var qtdErros = 0; // Percorre os inputs da tela verificando a obrigatoriedade. for (x in inputs) { var imgInputOk = document.createElement('img'); imgInputOk.setAttribute('src', '/lanfredi/imagens/validar_ok.gif'); imgInputOk.setAttribute('id', 'imgInputOk'); var imgInputErro = document.createElement('img'); imgInputErro.setAttribute('src', '/lanfredi/imagens/validar_erro.gif'); imgInputErro.setAttribute('id', 'imgInputErro'); input = inputs[x]; // Verifica se o input é obrigatório. if (input.className == "caixatextoCadastroObrigatorio") { if(input.value == ""){ qtdErros += 1; // insere a imagem de erro ao lado da caixa de texto. insertAfter(imgInputErro, input); // coloca o foco no primeiro campo obrigatório não preenchido. if(qtdErros == 1) input.focus(); }else // insere a imagem de ok ao lado da caixa de texto. insertAfter(imgInputOk, input); } } return false; } O problema: - Bem, o problema é que a função vai adicionando as imagens, sem remover as que já estavam sendo mostradas ao usuário. Portanto, se o usuário clicar em salvar sem preencher o campo 'código', a imagem de erro é criada (Perfeito!). Porém quando ele preenche o código e clica em salvar novamente, a imagem de ok é criada, ao lado da de erro, sem a substituir, olhem só: Tentei remover as imagens da seguinte forma dentro do for: imgARemover = (document.getElementById('imgInputErro') != null) ? document.getElementById('imgInputErro') : document.getElementById('imgInputOk'); if(imgARemover != null) input.parentNode.removeChild(imgARemover); Mas não dá certo... a função acaba dando um submit no form e fechando o meu modal panel... :( E então?! Alguém tem alguma idéia de como resolver isso? vlw! ;)
  17. Nossa!!! Vlw pela dica, Gigabyte! Não conhecia esse add-on, não! Com certeza será uma mão na roda!!! Hehehe!! Obrigada mais uma vez!!! ;)
  18. Então... o "required" é um dos atributos do input que estou utilizando, veja: <h:inputText id="descricao" value="#{descontoVencimentoBean.descontoVencimento.descricao}" style="width:475px;" required="true" styleClass="caixatextoCadastro" maxlength="50"/> Mas não tinha pensado em fazer uma classe que indicasse os campos obrigatórios! Realmente foi uma grande idéia essa do Gigabyte. Muito obrigada, Gigabyte! ;) Vou tentar implementar suas idéias! Realmente... nossa...ia ser muito menos trabalhoso mudar a classe do que trabalhar com todos esses ícones! ><' Mas é que foi a proposta mais aceita entre a equipe... aí não posso passar por cima.. O que farei será implementar os dois modos... aí a gente faz uma outra votação.. Nossa, mas vlw, mesmo!! Abriu meus olhos... achava que a solução não seria fácil..hehe! Bem, vou tentar... se der certo, eu posto aqui!! Obrigada novamente! ;) E Jonathan, muito obrigada por sua atenção também! ^_^ Vlw, meninos!!! ;) Gigabyte, muito obrigada! Não conhecia essa notação! Irei utilizá-la,sim! Com certeza!!! Vlw mesmo! ^_^
  19. Jonathan, muito obrigada por responder! ^^ Então... acontece que antes de verificar se o elemento está vazio (if (elemento.value=="")), eu tenho que verificar se o elemento é obrigatório, porque se ele não for, não posso exibir essa mensagem ao usuário, né?! Também não posso colocar break no for... pois a idéia é exibir a imagem de erro ("X") em todos os elementos que não foram preenchidos... e não somente em um..=/ Bom, primeiramente... o maior problema é que não estou conseguindo verificar se a propriedade required do elemento é true ou false. Nem sei se isso é possível... :( Ah... só uma dúvida: Além desses inputs do tipo text, também terei combos nos formulários. Posso utilizar essa mesma verificação (if (elemento.value=="")) para as combobox também?!
  20. Caros, estou aqui tentando implementar um modo de validação de campos obrigatórios que seja genérico. Pois este deverá ser utilizado por todas as páginas do ERP que estamos desenvolvendo. Cada página de cadastro deverá ter o seguinte funcionamento: - No submit do form, verificar se os campos obrigatórios foram preenchidos pelo usuário. - Caso um ou mais campos não tenham sido preenchidos: - Uma mensagem dizendo "Existem campos obrigatórios não preenchidos." deverá aparecer ao lado do botão salvar. - Também deverá aparecer uma imagem de um "X" em vermelho do lado de cada campo não preenchido. - Após o usuário preencher esses campos e clicar em salvar novamente: - A mensagem some e no lugar dos "X", aparecerá uma imagem de certo. Bem, eu consegui implementar isso no meu componente! O que eu fiz: - Coloquei duas imagens (uma a de erro ('X') e a outra de ok) pra cada input obrigatório. - Coloquei um ícone de erro e um output com a mensagem de erro ao lado do botão salvar e setei os dois como display:none. - No onsubmit do form chamo a seguinte função: function ValidarCamposObrigatorios() { var qtdErros = 0; if(document.getElementById('cadastrar:formCadastro:codigo').value == ""){ qtdErros += 1; document.getElementById('cadastrar:formCadastro:imgCodigoErro').style.display = 'inline'; document.getElementById('cadastrar:formCadastro:imgCodigoOk').style.display = 'none'; } else { document.getElementById('cadastrar:formCadastro:imgCodigoErro').style.display = 'none'; document.getElementById('cadastrar:formCadastro:imgCodigoOk').style.display = 'inline'; } if(document.getElementById('cadastrar:formCadastro:descricao').value == ""){ qtdErros += 1; document.getElementById('cadastrar:formCadastro:imgDescricaoErro').style.display = 'inline'; document.getElementById('cadastrar:formCadastro:imgDescricaoOk').style.display = 'none'; }else { document.getElementById('cadastrar:formCadastro:imgDescricaoErro').style.display = 'none'; document.getElementById('cadastrar:formCadastro:imgDescricaoOk').style.display = 'inline'; } if(document.getElementById('cadastrar:formCadastro:percentualAcrescimo').value == ""){ qtdErros += 1; document.getElementById('cadastrar:formCadastro:imgPercentualErro').style.display = 'inline'; document.getElementById('cadastrar:formCadastro:imgPercentualOk').style.display = 'none'; }else { document.getElementById('cadastrar:formCadastro:imgPercentualErro').style.display = 'none'; document.getElementById('cadastrar:formCadastro:imgPercentualOk').style.display = 'inline'; } if(qtdErros > 0){ document.getElementById('cadastrar:formCadastro:msgErroObrigatorio').style.display = 'inline' document.getElementById('cadastrar:formCadastro:imgErro').style.display = 'inline'; return false; }else { document.getElementById('cadastrar:formCadastro:msgErroObrigatorio').style.display = 'none' document.getElementById('cadastrar:formCadastro:imgErro').style.display = 'none'; return true; } } ** Nota: Os controles estão dentro de dois namecontainers (o subview('cadastrar') e o form('formCadastro')). Por isso esses ids com nome estranho do lado do cliente! >.< Aquie está o print do componente em funcionamento: Agora vamos às questões: - Como generalizar essa função para que todas as páginas possam utilizá-las, sendo que a função: - não sabe os id dos controles da página chamadora. - não sabe quais dos controles são obrigatórios. (a única diferença entre um controle simples de um controle de preenchimento obrigatório, é que o obrigatório setamos a propriedade 'required' como true, vejam: <h:panelGrid columns="3"> <h:inputText id="descricao" value="#{descontoVencimentoBean.descontoVencimento.descricao}" style="width:475px;" required="true" styleClass="caixatextoCadastro" maxlength="50"/> <h:graphicImage id="imgDescricaoErro" value="#{msgs['imagem-validar-erro']}" style="display: none;"/> <h:graphicImage id="imgDescricaoOk" value="#{msgs['imagem-validar-ok']}" style="display: none;"/> </h:panelGrid> Bom, a idéia que tive primeiramente, foi que cada página passasse os ids dos campos obrigatórios por parâmetro, e na função, eu percorreria esses parâmetros (não sei se é possível). Mas já logo desisti... pois... imaginem só uma página de cadastro com 100 campos... passar parâmetro por parâmetro... E ainda explicar para o pessoal que o id deverá ser "nomeSubView:nomeForm:nomeControle". ><' Então pensei em percorrer todos os inputs e verificar um por um se é obrigatório. Porém não tenho idéia de como fazê-lo.. =/ Por isso resolvi postar essa dúvida aqui... e aí?! Alguém tem uma luz?! :unsure:
×
×
  • Criar Novo...