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

SelectOneMenu and SelectItem

Bom dia,

Como faço para atribuir o valor selecionado pelo usuário a partir de um SelectItem?

 <h:selectOneMenu>
                  <f:selectItem itemLabel="Selecione..."/>
                               <f:selectItem itemLabel="Valor 1" itemValue="Valor 1"/>
                <f:selectItem itemLabel="Valor 2" itemValue="Valor 2"/>
            <f:selectItem itemLabel="Valor 3" itemValue="Valor 3"/>
                </h:selectOneMenu>

Obs. Utilizando formulários como <h:inputText /> consigo inserir as informações no banco. Mas agora quero pegar o valor selecionado no <f:selectItem /> e armazenar o banco de dados. O que é preciso fazer para que este procedimento seja executado? Obs 2. Nas aulas é realizado o procedimento, mas os valores de preenchimento são fornecidos pelo banco, no caso os autores. Mas o que quero é o valor definido no na opção seja armazenada no banco de dados. Por exemplo, se ele selecionou o valor 1 este valor será armazenado no banco de dados.

3 respostas

Oi W,K, tudo bem ?

De qualquer forma, voce vai precisar ter seu bean e lá vai ter que possuir um objeto para fazer o binding, ai quando ele clicar num botão para subir o formulário você salva essa informação no banco.

Espero ter ajudado.

Abraços

poderia mostrar um exemplo Matheus

solução!
<div id="conteudo">
            <p:growl id="growl" />
            <fieldset>
                <legend>
                    <h1>Novo Usuário</h1>
                </legend>
                <h:form>
                    <h:panelGrid columns="2">

                        <p:outputLabel value="Login" for="login" />
                        <p:inputText id="login" value="#{cadastroLoginBean.usuario.login}"
                            required="true" requiredMessage="Login é obrigátorio" />


                        <p:outputLabel value="Senha" for="senha" />
                        <p:password id="senha" value="#{cadastroLoginBean.usuario.senha}"
                            required="true" requiredMessage="Senha é obrigatória" />

                        <p:outputLabel value="Nivel de Usuário" for="niveis" />
                        <p:selectOneRadio value="#{cadastroLoginBean.usuario.nivel}"
                            required="true" requiredMessage="Usuario precisa ter nível"
                            id="niveis">
                            <f:selectItems value="#{cadastroLoginBean.niveis}" var="nivel"
                                itemLabel="#{nivel}" itemValue="#{nivel}" />
                        </p:selectOneRadio>


                        <p:commandButton value="Salvar"
                            action="#{cadastroLoginBean.salvar}" update="growl" />
                    </h:panelGrid>

                </h:form>


            </fieldset>
            <br />
            <h:form>
                <p:commandButton value="Voltar para login"
                    action="#{cadastroLoginBean.vaiParaLogin}" />
            </h:form>
        </div>

@Named
@ViewScoped
public class CadastroLoginBean implements Serializable {

    @Inject
    private Usuario usuario;

    @Inject
    private UsuarioDao dao;

    public String vaiParaLogin() {
        return "login?faces-redirect=true";
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public Nivel[] getNiveis() {
        return Nivel.values();
    }

    @Transactional
    public void salvar() {
        Usuario buscaUsuario = dao.buscaUsuario(usuario.getLogin());
        if (buscaUsuario == null) {
            dao.salva(usuario);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Usuário inserido"));
        } else {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Desculpe", "Esse usuario já existe"));
        }

        usuario = new Usuario();
    }
}