Olá pessoal, neste tutorial trabalharemos com o componente do JSF – JavaServer Faces, SelectOneMenu que renderiza um elemento de entrada HTML do tipo “select”. Isto é, com este componente podemos implementar opções de escolha para o usuário. No JSF este componente é o SelectOneMenu, que é o equivalente a “tag selection” do HTML puro.

Inicialmente iremos carregar as opções de forma estática. Em um outro momento aprenderemos a carregar as opções a partir do banco de dados. Dito isso, para começar abriremos um par de tags h:selectOneMenu.

Dentro do par de tags estabeleça as opções utilizando o h:selectItem. A tag h:selectItem implementa a propriedade itemValue que recebe o valor a ser devolvido ao servidor quando a opção em questão for selecionada pelo usuário.

GRAVANDO NO BANCO DE DADOS

Tendo implementado h:selectOneMenu na interface do formulário, é hora de gravar no banco de dados. O primeiro passo é criar “Entidade Pessoa” o atributo “sexo”. Bem como os respectivos métodos Getter and Setter para que possamos passar os dados e resgatá-los.

private String sexo;

O próximo passo é fazer com que o valor selecionado seja identificado e então passado ao objeto. E para isso utilizaremos a propriedade “value”, é ela quem vai dizer para qual atributo do objeto o item selecionado será adicionado.

Dessa forma no atributo “value” invocaremos a Entidade pessoa informando ao atributo sexo a opção selecionada.

< h:selectOneMenu id=”campoSexo” value=”#{pessoaBean.pessoa.sexo}” >

E como criamos um novo atributo no objeto, de forma automática o JPA – Java Persistence API, criará mais uma coluna na tabela na base de dados.

Mas agora quero que o que será gravado no banco de dados seja diferente do que aparece na tela para o usuário selecionar. Assim o usuário terá como opção para selecionar “Feminino” ou “Masculino”, no entanto, no banco de dados gravaremos apenas as iniciais “F” ou “M”.

Para isso atribuiremos ao “value” as opções para serem gravadas na base de dados e ao itemLabel as opções que serão exibidas para o usuário.

Dentro do par de tags h:selectOneMenu é possível melhorar ainda mais implementando mais um f:selectItem pedindo ao usuário para selecionar uma das opções. E então por meio da propriedade “noSelectionOption=true” fazer com que esta não seja uma opção selecionável. Assim, o usuário será “obrigado” a selecionar uma das outras duas opções.

<f:selectItem itemValue=”NÃO” itemLabel=”[--selecione--] noSelectionOption=true>

EM POUCAS PALAVRAS

Neste tutorial implementamos o componente h:selectOneMenu que nos permite selecionar um de vários itens disponíveis. E com o JPA após definir o atributo um novo campo na tabela é criado automaticamente.