Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Lista em SelectOneMenu

Eu preciso colocar uma lista de "Plataforma" para cadastrar um novo "Jogo" em meu sistema. Mas estou com duvidas na forma de colocar essa Lista o SelectOneMenu

Classe Jogo:

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column (name = "id_jogo")
    private int id;

    @Column(nullable = false)
    private String nome;

    @Column(nullable = false)
    private String descricao;

    @ManyToMany
    private List<Plataforma> plataforma = new ArrayList<>();

Classe Plataforma:

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column (name = "id_plataforma")
    private int id;

    @Column(nullable = false)
    private String nome;

    @Column(nullable = false)
    private String descricao;

Eu ja tenho as classes DAO e Bean das duas acima, acredito que não seja necessário colocar aqui.

Estou com duvida de como seria o metodo da Bean que vai listar e depois como passar a Plataforma selecionada para o cadastro do Jogo.

<h:form class="form-label" id="cadastroJogo">

                                    <div class="form-group row">
                                        <label for="thread" class="col-md-12">Nome do Jogo:</label>
                                        <div class="col-md-10">
                                            <h:inputText value="#{jogoMB.jogo.nome}"
                                                class="form-control" id="nomeJogo" />
                                        </div>
                                    </div>            

                                    <div class="form-group row">
                                        <label for="thread" class="col-md-12">Descrição:</label>
                                        <div class="col-md-10">
                                            <h:inputText value="#{jogoMB.jogo.descricao}"
                                                class="form-control" id="descricaoJogo" />
                                        </div>
                                    </div>    

                                    <div class="form-group row">
                                        <label for="thread" class="col-md-12">Plataforma:</label>
                                        <div class="col-md-10">
                                            <h:selectOneMenu value="#{}"  id="sl">
                                                <f:selectItems value="#{}" />
                                            </h:selectOneMenu>
                                        </div>
                                    </div>                                    

                                    <div class="text-center">
                                            <h:commandButton action="#{jogoMB.cadastrar()}"
                                                value="Cadastrar"
                                                class="btn btn-primary btn-lg btn-rounded btn-shadow" />
                                        </div>    


                                </h:form>
1 resposta
solução!

Oi Rafael,

Pelo que eu entendi a sua dúvida é sobre o que colocar em cada campo do selectOneMenu, correto?

No value do selectOneMenu, vai quem tem que receber a informação selecionada.

Em selectItems temos as propriedades:

  • value: recebe a lista a ser iterada;
  • var: o nome da variável que guardará o valor do elemento da lista naquela iteração;
  • itemValue: o valor que deve ser enviado para o ManagedBean. Este valor é o que será preenchido na propriedade value do selectOneMenu;
  • itemLabel: o valor que deve aparecer na tela dentro do select.

Ficou um pouco mais claro? Se não for essa a dúvida me avisa que a gente tenta resolver novamente.

Abraço!