quinta-feira, 4 de abril de 2013

Indicando campos obrigatórios com asterisco no Primefaces.

Boa tarde galera,

Depois de muitas... Mas muitas pesquisas encontrei a solução definitiva para um problema e sem a utilização das bibliotecas do MyFaces. (Pra quem utiliza o Mojarra este artigo vai ser uma mão na roda).

O Primefaces 3.4.2 não possui (acredito que por enquanto) uma forma de notificar o usuário sobre os campos obrigatórios antes da submissão do formulário, ou seja, se você quiser indicar que o usuário deve preencher determinados campos só será possível indicar esses campos após submeter o formulário.

Abaixo listo alguns pontos que devem ser considerados para que os campos sejam marcados como  obrigatórios antes da submissão do formulário:


  1. O usuário poderia simplesmente ir direto aos campos obrigatórios e preencher-los sem precisar submeter o formulário.
  2. Algumas validações comuns no formulário não causariam confusões e perdas de produtividade por parte do usuário.
  3. Indicar que um campo é obrigatório está presente em diversos sistemas desenvolvidos sem o Primefaces e JSF. 

A solução 

Primeiro passo, criar uma subclasse da com.sun.faces.renderkit.html_basic.LabelRenderer em seguida sobrescrever o método: encodeBegin(), conforme a listagem: 


Em seguida, você vai precisar registrar a classe no faces-config.xml conforme a listagem abaixo (o nome que dei pra minha classe foi MyLabelRenderer): 



Pequena Explicação sobre o que acontece:

O método encondeBegin deverá pesquisar todos os inputText da página com a tag required="true" e em seguida adicionar o asterisco formatado ao outputLabel antes do rótulo do campo. 


Qualquer dúvida, é só postar nos comentários.

Abraços!

2 comentários:

  1. Excelente! Só na próxima use um code para sua página, imagem o cara sofre reescrevendo tudo. Abraço

    ResponderExcluir
    Respostas
    1. Obrigado pelo feedback Felipe, pode deixar que os próximos vou colocar os códigos em tags code.

      Excluir