Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Duvida com o selectOneMenu

Gostaria de tirar minha duvida, vou citar uma classe de pessoa, e nela vo ter um tipoDePessoa, se é fisica ou juricida, no meu html vou ter algo parecido com isso.

<p:outputLabel value="Tipo Pessoa: " for="tipo"/>
                <p:selectOneMenu id="tipo" >
                    <f:selectItem itemLabel="Juridica" itemValue="juridica" />
                    <f:selectItem itemLabel="Fisica" itemValue="fisica" />
                </p:selectOneMenu>

Uma outra solução é buscar do meu banco de dados.

<p:outputLabel value="Tipo Pessoa: " for="tipo"/>
                <p:selectOneMenu id="tipo" >
                        <f:selectIntems  value="#{pessoaController.tipoPessoa}" var"pessoa" itemLabem="#{pessoa.nome}" itemValue="#{pessoa.id}"/>
                </p:selectOneMenu>

Não sei o correto se esta certo a forma porque não estou no meu noot, mais qual a melhor solução de usar? a primeira? ou a segunda?

5 respostas
solução!

E aí, Alisson, tudo certo?

Usamos o primeiro exemplo quando é algo fixo, que não precisamos retornar do banco de dados. Geralmente algo bem simples e sem muita opção, tipo: sexo (masculino e feminino).

O segundo exemplo é mais utilizado quando estamos trabalhando com diversos registros, que podem sofrer alterações e, por causa disso, os mantemos em tabelas no banco de dados. Por exemplo, você pode ter uma lista de pessoas, só que as pessoas são inseridas, atualizadas e removidas com frequência. Daí, criamos um cadastro de pessoas e temos um método que retorna uma lista de pessoas. Daí, passamos para o f:selectItems essa lista, para que ele exiba. Se não fosse assim e você utilizasse o primeiro exemplo (sexo) nesse caso que estou falando (pessoas), você teria o trabalho infinito de ficar alterando toda vez que um registro sofresse alguma alteração.

Na prática, em 99,9% das vezes, é melhor utilizar o f:selectItems.

Abraço.

Manoel então no meu caso ficaria melhor a primeira opção? porque não vo atualizar e nem remover os dados, e só tem 2 opção fisica e juridica, então a 1 seria a melhor solução?

Isso, Alisson! Como as opções são somente essas duas, não há problemas em deixar fixo (física e jurídica), utilizando apenas os dois f:selectItem mesmo.

Obrigado Manoel, Manoel teria como eu abrir uma outra tabela caso a pessoa fosse fisica aparecia alguns campos e se a pessoa fosse juridica aparecia outros campos, teria como fazer isso? tipo uma tabela? ou algum menu seila algo parecido?

Alisson, dá pra salvar em tabelas diferentes usando herança. Dá uma olhada aqui

http://uaihebert.com/jpa-mini-livro-primeiros-passos-e-conceitos-detalhados/

Nas páginas de 11 a 16 falam sobre herança de tabelas.

Espero que ajude.