Jump to content
Fórum Script Brasil

Amanda Makino

Membros
  • Content Count

    20
  • Joined

  • Last visited

Community Reputation

0 Neutro

4 Followers

About Amanda Makino

  • Birthday 12/12/1987

Perfil

  • Gender
    Female
  • Location
    Taquaritinga/Monte Alto
  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 = "ÁÉÍÓÚÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÃÕÇ[email protected]#$%^*_+=~`´"; 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... :(
×
×
  • Create New...