Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Campos não obrigatórios sendo salvos como string vazia ao


Amanda Makino

Pergunta

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! ;)

Editado por Amanda Makino
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

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! ;)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...